【发布时间】:2010-05-11 05:00:44
【问题描述】:
我想在 .htaccess 文件的末尾创建一个规则,以捕获在此之前未能匹配的所有内容。
我该怎么做?
附注我已经尝试了一切:)实际上,我没有,但看起来确实如此!
更新:有些人回复RewriteRule ^.*$ 或类似的。 这不起作用!它将匹配所有内容,包括其他“好的”网址。
【问题讨论】:
标签: .htaccess mod-rewrite
我想在 .htaccess 文件的末尾创建一个规则,以捕获在此之前未能匹配的所有内容。
我该怎么做?
附注我已经尝试了一切:)实际上,我没有,但看起来确实如此!
更新:有些人回复RewriteRule ^.*$ 或类似的。 这不起作用!它将匹配所有内容,包括其他“好的”网址。
【问题讨论】:
标签: .htaccess mod-rewrite
这里实际上已经有一些很好的答案,但你已经回复了......
但是这匹配了包括好东西在内的所有内容。
这是因为您没有告诉 mod_rewrite 停止处理匹配。为此,请在每条规则后使用“L”标签,它告诉 mod_rewrite “如果匹配此规则,则停止处理任何进一步的规则”。
RewriteRule ^RSS/([^/\.]+)/?$ rss.php?Page=$1 [L]
您需要将其放在每个规则之后。然后,当你把 catch all 放在最后时,只有在没有其他规则匹配的情况下才会被命中。
注意:如果您还提供未重写的资源,例如 CSS、图像、javascript 文件 - 老实说,您最好不要捕获所有资源,因为您不想重写它们的位置。
【讨论】:
vhosts.conf 和 apache2.conf。
听起来您想查看 RewriteRule 指令。 Quie 可能类似于以下内容:
重写规则 ^/(.+) {目标}
这将匹配根 URL (/) 并将其重定向到 {target} url。
【讨论】:
RewriteRule .* page.php [L]?
【讨论】:
.htaccess files are re-evaluated over and over and over and over and over until the rules stop matching. 我的实验也同意这一点。
[L] 表示最后一条规则。如果此规则成功,则不会处理更多规则。