【问题标题】:Internal server error With RewriteRule使用 RewriteRule 的内部服务器错误
【发布时间】:2016-06-16 11:58:16
【问题描述】:

我有一个问题是在更改我的网站的 url 时,它是动态生成的。

我启用了 Apache 模块 mod rewrite localhost wamp 服务器。在fundionaba完美之前,但在php url使用两个变量之前,现在删除一台服务器失败。我不明白为什么会失败。你能帮帮我吗?

当您单击以前有效的相同链接时,服务器错误是非常奇怪的。如果 php 变量有问题或 php 错误,因为它会,但不是服务器错误。

htaccess 之前的规则,当它完美运行时:

RewriteRule ^nov/([^/]*)/([^/]*)\.php$ /nov/nov.php?url=$1&url=$2 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /nov/nov\.php\?url=(.+)&url=(.+)\ HTTP/
RewriteRule ^nov/nov\.php$ /nov/%1/%2\.php? [L,R=301]

我现在使用的规则是通过删除一个不产生内部服务器错误的变量:

RewriteRule ^nov/([^/]*)\.php$ /nov/nov.php?url=$1 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /nov/nov\.php\?url=(.+)\ HTTP/
RewriteRule ^nov/nov\.php$ /nov/%1\.php? [L,R=301]

让我们看看我能不能说出错误的原因,我所做的只是删除其中一个变量。谢谢。

Apache 服务器错误日志:

[Thu Mar 03 10:17:46 2016] [error] [client ::1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://localhost/

【问题讨论】:

  • 您的 PHP 文件 nov.php 是否导致错误是什么导致服务器错误?你的 PHP 错误日志中有什么东西吗?
  • 检查您的 apache error_log 以了解 500 原因。
  • 错误是在 apache 中描述了有答案的合作伙伴。非常感谢你们,我会用 apache 的错误来编辑我的消息。

标签: php .htaccess url mod-rewrite


【解决方案1】:

你必须排除你正在重写的目标,否则你会得到一个无限循环错误,因为 /nov/nov.php?url=$1 也匹配模式 ^nov/( .+).php$

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /nov/nov\.php\?url=([^\s]+) [NC]
RewriteRule ^ /nov/%1.php? [L,R=301]
RewriteCond %{REQUEST_URI} !^/nov/nov\.php
RewriteRule ^nov/(.+)\.php$ /nov/nov.php?url=$1 [L]

【讨论】:

  • 真是太棒了,真的。它奏效了!我不理解正在运行的其他代码,并且仅删除一个变量是错误的。非常感谢您的帮助。
猜你喜欢
  • 2014-01-01
  • 2015-09-30
  • 1970-01-01
  • 2013-06-11
  • 2015-04-19
  • 2012-09-04
  • 2015-02-25
  • 1970-01-01
  • 2011-07-28
相关资源
最近更新 更多