mod_rewrite 重定向和隐藏扩展

mod_rewrite 重定向和隐藏扩展

我想隐藏所有文件中的 .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.phpindex.xxx),然后为该“新”扩展名设置处理程序来隐藏 php 扩展名,例如(根据您的特定安装检查 php 程序标识符):

 AddType application/x-httpd-php xxx

如果您根本不想要扩展,则将默认处理程序设置为 php:

 DefaultType application/x-httpd-php

相关内容