You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在已有友好URL规则的.htaccess中移除.php后缀失败求助

解决方案:移除PHP扩展名并保留Slug路由规则

问题出在规则的执行顺序上——你的Slug路由规则优先级太高,会先捕获所有非真实文件/目录的请求,包括/contact这类对应真实PHP文件的路径,导致移除扩展名的规则根本没机会触发。

调整规则顺序并优化配置即可解决,完整的.htaccess代码如下:

RewriteEngine On

# 移除PHP扩展名:先检查请求路径对应的.php文件是否存在,存在则内部跳转
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

# Slug路由规则:仅当请求不是真实文件/目录时,才转发到en.php处理
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([-/.a-zA-Z0-9]+)$ en.php?slug=$1 [QSA,L]

关键说明

  1. 规则顺序:先处理静态PHP文件的扩展名隐藏,再处理动态Slug路由。这样/contact会先匹配到存在的contact.php,内部跳转加载该文件;而像/about-us这类无对应PHP文件的路径,才会进入Slug路由规则。
  2. 测试验证:
    • 保存配置后,直接访问example.com/contact,应该能正常加载contact.php内容
    • 验证动态路由(如example.com/your-slug)是否仍正常指向en.php?slug=your-slug
  3. 额外检查:
    • 确认服务器已启用mod_rewrite模块
    • 确保.htaccess文件权限设置正确(通常为644),服务器能读取该文件

内容的提问来源于stack exchange,提问作者Kamikaza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:22:16