htaccess 内部错误代码 500

htaccess 内部错误代码 500

当我尝试进行 301 重定向时,收到内部错误代码 500:

Rewriterule ^categoy/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)? product_detail.php?category=$1&subcategory=$2&product=$4 [QSA,NC]

RewriteMap 文件:

RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]

有什么建议为什么我会收到这个错误?

谢谢

答案1

当你收到来自 Apache 的 500 错误时,Apache 会记录为什么它会在您的 中显示该错误error_log,无论该配置如何。请参阅该日志中的错误消息以找出您做错了什么。

答案2

.htaccess 文件中不允许使用 RewriteMap 指令。它应该写入 Apache 的配置文件 httpd.conf 中。

答案3

好的...让我们把一些事情弄清楚。

Rewriterule ^categoy/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)? product_detail.php?category=$1&subcategory=$2&product=$4 [QSA,NC]

这里有很多多余的东西,例如 NC 无论如何都会进行不区分大小写的匹配。我对你的代码进行了一些格式化:

RewriteMap lc int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L]

你现在说的是哪条规则?从你的标题 (301) 来看,我认为是第二条。你的重写条件看起来很奇怪。但是,与重写规则相关的错误 500 的最常见原因是缺乏权限。请确保你AllowOverride All在服务器配置中执行此操作或将规则移到那里(这比在 htaccess 文件中提供更好的性能)

相关内容