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

WordPress中.htaccess RewriteRule配置出现500错误求助

解决WordPress中.htaccess RewriteRule导致的500错误问题

你的500错误大概率是因为内部重写循环导致的——Apache的mod_rewrite会反复处理重写后的URL,直到达到最大循环次数(默认10次),然后抛出500错误。原规则没有限制重复触发的条件,导致重写后的请求又被规则匹配,陷入循环。

解决方案1:添加循环防护条件(兼容所有Apache版本)

在RewriteRule前增加一个条件,确保只有当URL中还没有get_value参数时才执行重写,避免循环:

# 防止循环:仅当查询字符串中没有get_value参数时执行重写
RewriteCond %{QUERY_STRING} !get_value=
RewriteRule ^index.php/field/(.*)$ index.php/field/?get_value=$1 [L]

解决方案2:使用END标记(Apache 2.4+推荐)

如果你的服务器运行Apache 2.4或更高版本,可以直接用END标记替代L,它会完全终止所有重写处理,从根源上避免循环:

RewriteRule ^index.php/field/(.*)$ index.php/field/?get_value=$1 [END]

重要注意事项:规则位置

请把你的自定义规则放在WordPress默认规则区块的前面,否则WordPress的规则会先捕获请求,导致你的自定义规则无法生效。完整的.htaccess示例如下:

# 自定义重写规则(放在WordPress规则之前)
RewriteCond %{QUERY_STRING} !get_value=
RewriteRule ^index.php/field/(.*)$ index.php/field/?get_value=$1 [L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

测试验证

修改完.htaccess后,访问https://domain_name.com/index.php/field/test_value,检查是否成功内部重定向到https://domain_name.com/index.php/field/?get_value=test_value,同时没有500错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:03:40