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

如何配置Rewrite规则移除.php扩展名但排除enquire子目录?

Apache Rewrite规则调整方案

针对你需要实现大部分页面移除.php扩展名,但保留enquire子目录下.php后缀的需求,调整后的Rewrite规则如下:

RewriteEngine On
RewriteBase /

# 1. 排除enquire目录,将带.php的URL永久重定向为无后缀(仅非enquire目录生效)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /((?!enquire)[^.]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [NC,L,QSA,R=301]

# 2. 排除enquire目录,将无后缀请求内部映射到对应的.php文件(仅非enquire目录生效)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/enquire
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

# 3. 保留enquire目录原有规则(处理该目录下的动态请求)
RewriteRule ^enquire/([0-9]+)$ contactmail.php?a=$1 [NC,L,QSA]
RewriteRule ^enquire/(.*)$ contactmail.php?s=$1 [NC,L,QSA]

关键调整说明:

  • 外部重定向规则:增加(?!enquire)负向预查,确保enquire目录下的带.php URL不会被强制转为无后缀形式。
  • 内部重写规则:保留RewriteCond %{REQUEST_URI} !^/enquire条件,避免enquire目录的无后缀请求被错误映射到.php文件。
  • 规则顺序优化:将重定向规则前置,避免内部重写优先触发导致逻辑混乱;同时把匹配数字参数的enquire/([0-9]+)规则放在通用匹配规则前,确保精确请求优先匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:15:31