mod_rewrite - сделать два перенаправления - если первый не совпадает, сделать второй - PullRequest
0 голосов
/ 26 апреля 2011

Это мой htaccess файл на данный момент

RewriteEngine On

# Only redirect if file dosen't exist.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/(.*)     /admin.php          
RewriteRule ^([^/])         /index.php          [L]

Я понятия не имею, почему это не работает. Я думаю, что наконец-то понял mod_rewrite, а потом он делает что-то совершенно неожиданное, как это.

В основном, если URL-адрес domain.com/admin/something, я хочу, чтобы он перенаправил на domain.com/admin.php (в том числе, если это просто / admin). Однако, если НИЧЕГО еще, я хочу, чтобы он перенаправил на index.php.

Есть идеи, как этого добиться?

Спасибо.

1 Ответ

2 голосов
/ 26 апреля 2011
RewriteEngine On

# No redirect, if file or directory exists
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

RewriteRule ^admin/(.*)     /admin.php          [L]
RewriteRule ^(.*)$         /index.php         [L]

Не проверял. Интересная часть - это L -Flag после admin-правила, потому что он предотвращает совпадение следующего правила.

Я изменил RewriteCond -Statements, потому что они применяются только к следующему RewriteRule и (в вашем случае) не влияет на правило на index.php.

...