2010-12-07 1 views
0

Здравствуйте, долго слушатель, первый звонок здесь!
Благодарим вас за отличный совет, который вы все разделяете.
mod_rewrite: Как сопоставить файл в каталоге или в корневом каталоге в зависимости от доступности?

У меня есть эти правила mod_rewrite Установка:

RewriteRule ^([^/.]+)/([^/.]+)/?$ $1--$2.php?%{QUERY_STRING} [L] 
RewriteRule ^([^/.]+)/?$ $1.php?%{QUERY_STRING} [L] 

Они делают /компании/услуги/ перенаправлять компании - services.php. Or/company/to company.php. Прекрасно работает.

Но теперь я хотел бы другое правило, что если бы я должен был поставить services.php внутри физического каталога/компании/он будет соответствовать и перенаправлять это. И если это не удается, найдите мое первоначальное правило. (А если это невозможно, вернуть 404.)

Я полагал, что это было бы так просто, как в том числе:

RewriteRule ^([^/.]+)/([^/.]+)/?$ $1/$2.php?%{QUERY_STRING} [L] 

, но не так. Вместо этого он вернет 404. Я немного тупик, поскольку это противоречит тому, как я считаю, что mod_rewrite работает (если правило не соответствует, перейдите к следующему).
Спасибо за любые указатели!

ответ

0

Найдено. Для справки, это своя норма:

RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f 
RewriteRule ^([^/.]+)/([^/.]+)/?$ /$1/$2.php?%{QUERY_STRING} [L] 
RewriteRule ^([^/.]+)/([^/.]+)/?$ $1--$2.php?%{QUERY_STRING} [L] 
RewriteRule ^([^/.]+)/?$ $1.php?%{QUERY_STRING} [L] 
+0

Не нужно добавлять строку запроса. – Gumbo 2010-12-07 14:30:54

Смежные вопросы