.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请求重定向到另一个文件夹的最后一行时,我收到了这个错误。

enter image description here

当我将扩展名更改为.html(如RewriteRule ^(.*).php RESOURCES/$1.html)或其他内容时,代码正常工作。

enter image description here

为什么服务器会抛出异常呢?

答案

添加,

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的帮助

在 htaccess 中使用 rewriterule 的页面 slug

.htaccess 中的 RewriteRule 在 app.yaml 文件中转换为啥?

我的 .htaccess 中的 RewriteRule 命令不起作用

.htaccess - ErrorDocument 与 RewriteRule