如何从 REQUEST_FILENAME 中删除尾随斜杠以便在重写条件下进行比较?

如何从 REQUEST_FILENAME 中删除尾随斜杠以便在重写条件下进行比较?

如果我请求页面http://www.mysite.com/frogs/并使用这些重写规则:

# See if the requested URL is in our cache. If so, serve it
RewriteCond /var/www/cache%{REQUEST_FILENAME}.html -f
RewriteRule (.*) /var/www/cache/$1.html [L,QSA]

Apache 尝试查找名为“frogs/.html”的文件,但当然会失败。我想使用不带尾部斜杠的 %{REQUEST_FILENAME},这样它就会查找并提供“frogs.html”。

我怎样才能让它做到这一点?

答案1

编辑:

测试一下。它应该会删除尾部的斜杠:

RewriteCond /var/www/cache/$1.html -f
RewriteRule ^/(.+)/*$ /var/www/cache/$1.html [L, QSA]

原因是您可以从 RewriteCond 中反向引用 RewriteRule 中括号内的正则表达式。请参阅mod_rewrite 文档有关反向引用流程的更多信息。

相关内容