【问题标题】:500 Internal Server Error while trying to Rewrite URL in .htaccess尝试在 .htaccess 中重写 URL 时出现 500 内部服务器错误
【发布时间】:2012-05-26 09:17:14
【问题描述】:

我需要您的帮助来创建动态 URL 以获得 SEO 收益。我尝试在我当前的 URL 上实现以下 .htaccess。但我收到 500 内部服务器错误

请问问题出在哪里? 谢谢

链接

http://127.0.0.1/index.php?id=1

.htaccess

RewriteEngine on
RewriteRule ^index/([a-zA-Z0-9]+)/$ index.php?id=$1

Apache 错误日志

无效命令“RewriteEngine”,可能拼写错误或由未包含在服务器配置中的模块定义

【问题讨论】:

  • 规则看起来不错。检查您的服务器日志(Linux 上的/var/log/apache2/error.log) - 会有一个条目,因为它是 500 错误。可能是一些配置的东西。
  • 哦等等,你有a-ZA-z——这很奇怪。把a-zA-Z
  • 如果您发布正在重写的 URL 也会有所帮助,而不仅仅是结果应该是什么
  • 嗯。我想知道由未包含在服务器配置中的模块定义是什么意思?
  • 重写日志说 mod_rewrite 未启用/安装。规则看起来不错,但您可能需要Option -Multiviews 才能使其正常工作。

标签: php .htaccess mod-rewrite url-rewriting


【解决方案1】:

您需要安装mod rewrite module

【讨论】:

  • 不,这里没有循环——他的规则只有在 index 后面有斜线时才会替换它。
  • 另外,您的意思可能是%{REQUEST_URI} 而不是%{REMOTE_HOST} :)
  • 我完整地重写了我的答案。
  • 可能你只需要加载它。
  • 加载不是安装的一部分吗?
【解决方案2】:

替换你的规则
RewriteRule ^index/([a-zA-Z0-9]+)/$ index.php?id=$1 [L]

a-Z 并不像人们想象的那样工作,A-z 很奇怪。这就是引发错误的原因。

此外,添加 [L] 标志可防止进一步重写。

【讨论】:

  • 好的,那么您需要考虑为 Apache 安装和启用 mod_rewrite。它应该像sudo a2enmod mod_rewrite 一样简单。
  • 然后在你的虚拟主机conf文件的目录配置中添加AllowOverride All
  • 但这不应该强制 500 AFIK。 +1 指出我的错误如此之快;-)
  • 哦,是的 - 这不会是 500,但规则永远不会匹配 :) 没问题。没有恶意:)
  • 老兄不赞成投票 - OP 一开始没有粘贴错误日志!在回答 .htaccess 问题时,我通常假设他们已经安装、加载并启用了该模块,除非另有说明。加上我指出的错误是有效的——即使他启用了 mod_rewrite,他的规则也不会起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多