我通常使用MVC路由,但是我必须在非MVC的站点上工作,并且需要添加新功能。
这是我的常用命令:
RewriteRule ^blog/why-am-using-htaccess/$ viewBlog.php?blogHook=$1 [L]
RewriteRule ^blog/(.*) blogs.php [L]
RewriteRule ^(.*)/$ page.php?hookName=$1
我的问题是我必须在上面的所有内容上都使用[L]标志才能正常工作。我想基本上向
发出标志RewriteRule ^(.*)/$ page.php?hookName=$1
这基本上说了上面的所有事情,但最后一个是后备。
有什么办法吗?
答案 0 :(得分:1)
您必须使用
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
最后一条规则之前。第一条规则将请求的URL重写为可以访问的有效(php)文件,因此条件将变为false。如果之前没有匹配的规则,但是所请求的url是有效文件(例如图像),则该规则也不会得到处理。
您还应该在最后一个规则中省略斜杠:^(。*)/ $,因为否则该规则将仅重写带有结尾斜杠的url。