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下的其他页面?
答案 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]