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

添加player.php规则后.htaccess其他RewriteRule失效,触发500错误

.htaccess重写规则导致500错误的解决方案

问题根源

  1. 缺少对真实文件/目录的排除规则,重写后的目标文件(如index.php、player.php)会被再次匹配,引发无限重写循环,Apache达到重写次数上限后返回500错误。
  2. 第一条video规则的正则表达式不符合预期,^video/([0-9]+)/.$强制要求/后必须有一个任意字符,仅匹配video/123/x这类URL,而非常规的video/123或video/123/。

修正后的.htaccess代码

RewriteEngine On

# 跳过真实存在的文件和目录,避免重写循环
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 匹配video页面,支持带/或不带/的URL格式
RewriteRule ^video/([0-9]+)/?$ /player.php?video_id=$1 [L,QSA]

# 原有业务规则按顺序保留
RewriteRule ^site/([^/]+)/?$ /index.php?site=$1 [L,QSA]
RewriteRule ^([^/]+)$ /index.php?keyword=$1 [L,QSA]
RewriteRule ^([^/]+)/$ /index.php?network=$1 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)$ /index.php?network=$1&keyword=$2 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/$ /index.php?network=$1&site=$2 [L,QSA]

关键说明

  • RewriteCond %{REQUEST_FILENAME} !-f和!-d:告诉Apache仅当请求路径不是真实文件或目录时,才执行后续重写规则,从根源上避免循环。
  • 修正video规则的正则:/?表示末尾斜杠可选,适配更通用的URL访问场景。
  • 规则顺序:保持具体规则(如video、site)在前,通用规则在后,确保精准匹配后通过[L]标记终止后续规则处理。

内容的提问来源于stack exchange,提问作者Martin the hun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:17:28