忽略RewriteCond和RewriteRule的尾部斜杠

时间:2017-02-02 17:05:09

标签: apache .htaccess mod-rewrite

我的htaccess文件中有以下内容:

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}\.html -f
RewriteRule .* cached/%{REQUEST_URI}\.html [L]

我有一个网址blah.com/a /

我有一个文件缓存/ a.html

我如何告诉我的htaccess忽略尾部斜线以查找并显示a.html而不是/ .html

注意:从URL中删除斜杠不是一个选项,因为已经设置了URL模式。

1 个答案:

答案 0 :(得分:2)

这是因为%{REQUEST_URI}正在向目标添加尾部斜杠,该斜杠映射到无效的uri /file/.html,为了解决此问题,您需要使用backrefrence。

RewriteCond %{DOCUMENT_ROOT}/cached/$1.html -f
RewriteRule ^(.*?)/?$ /cached/$1.html [L]