.htaccess重写规则:如何避免子页面匹配主页面规则
解决WordPress子页面被重定向到mainpage.php的问题
你当前的问题是自定义RewriteRule导致mainpage的子页面也加载了mainpage.php,而非WordPress默认的子页面。以下是具体解决方法:
确保规则为精确匹配:你写的
RewriteRule ^mainpage$ mainpage.php [L,QSA]本身是精确匹配请求URI为/mainpage(不带结尾斜杠)的情况,子页面/mainpage/sub-page1这类URI不会被该规则匹配。如果子页面仍被影响,大概率是规则在.htaccess中的位置错误。调整规则位置:把自定义规则放在WordPress默认重写规则的前面。WordPress的默认规则通常以
RewriteBase /和RewriteRule ^index\.php$ - [L]开头,你的自定义规则必须放在这部分之前,这样只有精确匹配的/mainpage会走mainpage.php,其他请求(包括子页面)会交给WordPress处理。
正确的.htaccess结构示例:
# 自定义规则:仅匹配精确的/mainpage RewriteRule ^mainpage$ mainpage.php [L,QSA] # WordPress默认重写规则 RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
- 可选:处理带结尾斜杠的情况:如果需要同时匹配
/mainpage和/mainpage/,可以把规则改成RewriteRule ^mainpage/?$ mainpage.php [L,QSA],这个正则会匹配带或不带结尾斜杠的主页面,但依然不会匹配子页面。
内容的提问来源于stack exchange,提问作者chandana Gowda
相关产品推荐
相关产品推荐

