htaccess mod_rewrite - 将所有URL重新路由到索引,除了/ admin

时间:2013-03-03 23:07:51

标签: .htaccess url mod-rewrite rewrite

我在htaccess文件中设置了一小组重写规则,我希望每个url都转到index.php文件,除了/ admin我要重定向到admin.php。不幸的是,不熟悉mod_rewrite或regexp。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^admin$ admin.php [L]
    RewriteRule . /index.php [L]
</IfModule>

这给了我一个内部服务器错误(不是说500)。删除或取消注释管理员重写可以使其正常工作。

1 个答案:

答案 0 :(得分:1)

条件需要应用于index.php重写规则,否则会导致重定向循环。 RewriteCond仅应用于紧随其后的RewriteRule,因此将所有内容路由到索引的规则没有条件。尝试重新排列行:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^admin$ admin.php [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>