.htaccess问题 - [L]标志以任何方式简化

问题描述 投票:0回答:1

我通常使用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

这基本上说做上面的一切,但最后一个是后备。

有没有办法做到这一点?

.htaccess url-rewriting flags mod
1个回答
1
投票

你必须使用

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

在你最后一次统治之前第一条规则将请求的URL重写为可以访问的有效(php)文件,因此条件将变为false。如果之前没有匹配的规则,但请求的URL仍然是有效文件(例如图像),则不会处理此规则。

您还应该省略最后一条规则中的斜杠:^(。*)/ $,否则此规则仅重写带有结尾斜杠的网址。

© www.soinside.com 2019 - 2024. All rights reserved.