PHP网站URL附加内容异常求助:需通过.htaccess实现干净URL
解决PHP页面异常输出与干净URL实现问题
一、阻止PHP文件后带额外路径的异常访问
当访问ultrasound.php/css这类URL时,服务器会把/css当作PATH_INFO传递给PHP脚本,导致页面输出异常。可以通过两种方式解决:
1. 在PHP脚本内处理
在ultrasound.php的最开头添加以下代码,检测到多余路径时直接返回404:
if (!empty($_SERVER['PATH_INFO'])) { http_response_code(404); echo "<h1>404 Not Found</h1>"; exit; }
2. 用.htaccess拦截
在网站根目录的.htaccess文件中添加规则,直接拦截这类请求并返回404:
RewriteEngine On # 匹配ultrasound.php后跟随任意内容的URL,返回404 RewriteRule ^ultrasound\.php/.+$ - [R=404,L]
二、实现干净URL(移除.php后缀)
通过.htaccess的Rewrite规则来实现,以下是基础配置:
RewriteEngine On # 确保请求的不是真实存在的文件或目录(避免静态资源被重写) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 将/ultrasound映射到/ultrasound.php RewriteRule ^ultrasound$ ultrasound.php [L] # 如果需要支持动态路径(比如/ultrasound/detail),可以用这条规则 # RewriteRule ^ultrasound/(.*)$ ultrasound.php?page=$1 [L,QSA]
QSA参数会保留原URL的查询字符串(比如/ultrasound?id=1会传递到ultrasound.php?id=1)- 如果要全站移除.php后缀,可以把规则改成:
RewriteRule ^([^\.]+)$ $1.php [NC,L],但注意要配合前面的文件/目录检测规则,避免冲突。
内容的提问来源于stack exchange,提问作者Samsher Yadav
相关产品推荐
相关产品推荐

