.htaccess RewriteRule .php扩展冲突

问题描述 投票:0回答:1

我试图把我所有的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

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

php apache .htaccess mod-rewrite
1个回答
1
投票

添加,

RewriteCond %{REQUEST_FILENAME} !-f

以上

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

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

单独指定RewriteRule ^(.*)\.php /RESOURCES/$1\.php会使页面重定向太多次到同一页面,因为您正在创建的请求具有php扩展名,目标文件也具有.php扩展名。

© www.soinside.com 2019 - 2024. All rights reserved.