内部服务器错误使用RewriteRule

时间:2016-03-03 08:59:53

标签: php .htaccess url mod-rewrite

我遇到的问题是更改我的网站的网址,这是动态生成的。

我启用了Apache模块mod重写localhost wamp服务器。在debionaba完美之前,但在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/

1 个答案:

答案 0 :(得分:3)

你必须排除你正在重写的目的地,否则你会得到无限循环错误,因为 /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]