如何阻止apache将以斜杠结尾的url视为目录

时间:2013-03-07 14:06:02

标签: .htaccess mod-rewrite

我目前有以下作为我的静态文件的htaccess规则,它可以正常工作。

http://mywebsite.local/en/testing-pagecached_pages/en/testing-page.html

获取页面
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cached_pages/%{REQUEST_URI}\.html -s
RewriteRule .* cached_pages/%{REQUEST_URI}\.html [L]

我的服务器还将索引文件写为cached_pa​​ges / en.html,这是正确的。但是,需要使用什么htaccess RewriteCond和RewriteRule行指向该文件,因此http://mywebsite.local/en/cached_pages/en.html获取页面

RewriteCond %{REQUEST_METHOD} GET
???????????
???????????

请注意该网址末尾有 / ,所以它并不像我想象的那样直截了当。

那么,如何使用斜杠结束为url工作的rewriterules呢?

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用附加的斜杠/复制现有规则,并将其锚定在^$

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cached_pages/$1\.html -s
RewriteRule ^(.+)$ cached_pages/$1\.html [L]

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cached_pages/$1\.html -s
RewriteRule ^(.+)/$ cached_pages/$1\.html [L]