Очистка вложенных операторов mod_rewrite - PullRequest
4 голосов
/ 08 февраля 2010

Я очищаю большой .htaccess файл, содержащий множество mod_rewrite операторов.

Самая большая часть беспорядка исходит от заявлений, перехватывающих различные случаи

/directory1
/directory1/directory2
/directory1/directory2/directory3

используя такие выражения, как

RewriteCond  %{REQUEST_URI} ^/([^/]+)/([^/]+)$   
RewriteRule .* /front.php?level1=%1&level2=%2&%{QUERY_STRING} [L]

RewriteCond  %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)$   
RewriteRule .* /front.php?level1=%1&level2=%2&level3=%3&%{QUERY_STRING} [L]

Может ли кто-нибудь, разбирающийся с mod_rewrite, дать мне указатель на то, как написать одно универсальное утверждение, которое перехватит любую глубину directory1/directory2... и поместит соответствующую переменную level в RewriteRule?

1 Ответ

2 голосов
/ 08 февраля 2010

Скорее используйте следующее rewriterule

RewriteRule ^(.*)$ front.php/$1 [L]

и доступ к папкам с помощью pathinfo в front.php:

$pathinfo = $_SERVER['PATH_INFO'];

Вы также можете включить MultiViews в Apache и настроить его на использование front.php в качестве индексного файла и захватить pathinfo таким же образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...