htaccess mod_rewrite - 排除最后/在REQUEST_URI中

时间:2018-03-09 01:03:31

标签: php apache .htaccess mod-rewrite

我试过寻找答案,但我似乎无法找到答案。

我想要的是当有人访问某个页面时,apache会检查该页面是否存在缓存文件然后加载而不是让php为其提供服务。

EG:http://example.com/about 为此,我使用下面的代码,它的工作原理。但是,只要我在这一端添加一个/:http://example.com/about/它不再起作用了。我尝试使我的缓存文件包含斜杠,但这是不可能的。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^(POST)$
RewriteCond %{DOCUMENT_ROOT}/cached_pages/%{REQUEST_URI}.html -f
RewriteRule . %{DOCUMENT_ROOT}/cached_pages/%{REQUEST_URI}.html
</IfModule>

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。 @ishegg帮我修改了RewriteRule,而ReWriteCond则使用了变量。

<IfModule mod_rewrite.c>
RewriteEngine On
SetEnvIf Request_URI "^(.+?)/?$" PATH=$1
RewriteCond %{REQUEST_METHOD} !^(POST)$
RewriteCond %{DOCUMENT_ROOT}/cached_pages/%{ENV:PATH}.html -f
RewriteRule ^(.+?)/?$ %{DOCUMENT_ROOT}/cached_pages/$1.html
</IfModule>