如何通过.htaccess配置移除静态PHP文件URL中的.php后缀
修改后的完整.htaccess代码
ErrorDocument 404 /404.php ErrorDocument 500 /500.php ErrorDocument 403 /403.php RewriteEngine On # 将带.php后缀的请求301重定向到无后缀版本 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] # 内部重写:无后缀的请求对应到.php文件 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php [NC,L] # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
规则说明
- 新增的重定向规则会识别所有带
.php后缀的主动访问请求,自动301跳转到去掉后缀的URL,实现你要的sitename.com/page.php跳转至sitename.com/page的效果,THE_REQUEST变量用来避免内部重写时出现死循环 - 原有内部重写规则保留,作用是当用户访问无后缀URL时,服务器内部自动加载对应
.php文件的内容,用户无感知 - 所有PHP后缀处理规则放在WordPress默认规则前,不会影响WordPress本身的伪静态功能
生效验证
修改后先清空浏览器缓存,再访问带.php后缀的静态页面测试,确认会自动跳转到无后缀地址,同时WordPress站点所有页面访问正常即可。
内容的提问来源于stack exchange,提问作者Mel
相关产品推荐
相关产品推荐

