.htaccess RewriteRule .php扩展冲突
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.htaccess RewriteRule .php扩展冲突相关的知识,希望对你有一定的参考价值。
我试图把我所有的php文件放在一个单独的文件夹中,所以这是我在.htaccess
的尝试。
DirectoryIndex /PUBLIC/index.php
RewriteEngine on
#Startpage Header Banner
RewriteRule ^header_banner(.*) PUBLIC/template/start/header_banner/$1
#Public files
RewriteRule ^css(.*).css PUBLIC/css/$1.css
RewriteRule ^js(.*).js PUBLIC/js/$1.js
RewriteRule ^symbol(.*) PUBLIC/symbol/$1
#All PHP Requests
RewriteRule ^(.*).php /RESOURCES/$1.php
一切正常,但是当我想将我的php请求重定向到另一个文件夹的最后一行时,我收到了这个错误。
当我将扩展名更改为.html
(如RewriteRule ^(.*).php RESOURCES/$1.html
)或其他内容时,代码正常工作。
为什么服务器会抛出异常呢?
答案
添加,
RewriteCond %{REQUEST_FILENAME} !-f
以上
RewriteRule ^(.*).php /RESOURCES/$1.php
可以帮你完成工作。由于您所做的请求不是实际的PHP文件,因此RewriteCond %{REQUEST_FILENAME} !-f
会传递条件并处理规则。
单独指定RewriteRule ^(.*).php /RESOURCES/$1.php
会使页面重定向太多次到同一页面,因为您正在创建的请求具有php
扩展名,目标文件也具有.php
扩展名。
以上是关于.htaccess RewriteRule .php扩展冲突的主要内容,如果未能解决你的问题,请参考以下文章
将多个 RewriteRule 指令组合成 .htaccess 中的单个规则
在 htaccess 中使用 rewriterule 的页面 slug
.htaccess 中的 RewriteRule 在 app.yaml 文件中转换为啥?