我通常使用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
这基本上说做上面的一切,但最后一个是后备。
有没有办法做到这一点?
你必须使用
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
在你最后一次统治之前第一条规则将请求的URL重写为可以访问的有效(php)文件,因此条件将变为false。如果之前没有匹配的规则,但请求的URL仍然是有效文件(例如图像),则不会处理此规则。
您还应该省略最后一条规则中的斜杠:^(。*)/ $,否则此规则仅重写带有结尾斜杠的网址。