我想隐藏所有文件中的 .php 扩展名,但我的正则表达式无法正常工作,它正在重定向以下内容 /path/to/script.php?param1=test.php -> /path/to/script?param1=test
它正在从 %{REQUEST_URI} 和 %{parameters} 中删除“.php”。
有没有办法在 .php 第一次出现时停止并替换它?
谢谢。
这是我的.conf 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
DirectorySlash On
# GET /path/to/script.php q=343434
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
# append .php to all paths
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule (.*) $1.php [L,QSA]
</IfModule>
答案1
使用 mod-rewrite(在发出请求后执行)不会隐藏任何内容。尽管“通过隐蔽实现安全”通常不被视为安全计划的核心,但您可以通过为“php”文件赋予不同的文件扩展名(例如,更改index.php
为index.xxx
),然后为该“新”扩展名设置处理程序来隐藏 php 扩展名,例如(根据您的特定安装检查 php 程序标识符):
AddType application/x-httpd-php xxx
如果您根本不想要扩展,则将默认处理程序设置为 php:
DefaultType application/x-httpd-php