mod_rewrite - 做两个重定向 - 如果第一个不匹配则执行第二个重定向

时间:2011-04-26 13:33:03

标签: .htaccess mod-rewrite

这是我目前的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 个答案:

答案 0 :(得分:2)

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 - 标志,因为它阻止了下一个规则的匹配。

我更改了RewriteCond - 语句,因为它们仅适用于下一个RewriteRule,而且(在您的情况下)不会影响index.php的规则。