.htaccess RewriteRule .php扩展冲突

时间:2017-12-17 19:02:43

标签: php apache .htaccess mod-rewrite

我正在尝试将所有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

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

1 个答案:

答案 0 :(得分:1)

添加,

RewriteCond %{REQUEST_FILENAME} !-f

以上

RewriteRule ^(.*)\.php /RESOURCES/$1\.php

可以帮你完成工作。由于您所做的请求不是实际的PHP文件,RewriteCond %{REQUEST_FILENAME} !-f会传递条件并处理规则。

单独指定RewriteRule ^(.*)\.php /RESOURCES/$1\.php会使网页重定向次数太多次,因为您所做的请求的扩展名为php,目标文件的扩展名为.php好。