apache mod_rewrite影响子文件夹中的文件

时间:2009-08-07 07:45:14

标签: apache mod-rewrite

Options +FollowSymlinks
RewriteEngine On
RewriteBase /mysite

RewriteRule ^([^/\.]+)/([^/\.]+)/?$ page.php?p=$1&name=$2 [NC,L]
RewriteRule ^([^/\.]+)/?$ page.php?name=$1 [NC,L]

上面的代码写在我的.htaccess文件中。我想要我的网址 从:

http://localhost/mysite/page.php?p=categoryname&name=article_title
http://localhost/mysite/page.php?&name=articel_title

为:

http://localhost/mysite/category/article_title
http://localhost/mysite/article_title

这些规则工作正常但是如果我尝试访问我的后端管理员哪个URL是http://localhost/mysite/admin`它将页面重定向到page.php?name = admin。 有没有办法只限制page.php的规则,而不影响子文件夹admin下的其他页面?

2 个答案:

答案 0 :(得分:1)

您可以使用规则阻止/admin被重写:

RewriteRule ^admin$ - [L]

将该规则放在其他规则之前,它将是唯一适用于/admin的规则。

答案 1 :(得分:0)

如果您在规则之前添加此重写条件,则只有在真实文件的请求时才会应用规则。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ page.php?p=$1&name=$2 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/\.]+)/?$ page.php?name=$1 [NC,L]