Apache 在我的域名上创建子域名时出现 500 内部服务器错误

Apache 在我的域名上创建子域名时出现 500 内部服务器错误

我已经按名称创建了子域名http://admin.stenzsolutions.com为了测试子域名,我托管了与主域名相同的内容http://www.stenzsolutions.com

现在我在子域名上遇到了一个问题...主页加载正常,但如果单击任何链接,它都会出现 500 内部服务器错误...主页上的相同内容就像梦一样运行,没有任何问题...这是我遇到的问题的确切描述...


Internal Server Error
---------------------

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache Server at admin.stenzsolutions.com Port 80

我刚刚在谷歌上搜索了一下,发现我的 .htaccess 文件可能有问题...所以这是我的 .htaccess 文件


RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

以下是我从服务器错误日志中得到的确切错误


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.

答案1

听起来你的代码中有绝对链接。与其乱改重写(在这种情况下没有必要),不如将链接设为相对链接。正如你现在发现的那样,对内部链接使用绝对链接确实是一种不好的做法,因为它破坏了可移植性,只会带来维护上的噩梦。

编辑:

最好检查结果 HTML 中的问题,而不是源代码。使用 Firefox 或 Chrome(可能还有除 IE 之外的所有浏览器),最容易的方法是使用以下“书签小工具”(为任何页面创建书签并用此代码替换 URL)。

javascript:%20var%20win%20=%20window.open();%20win.document.write('<html><head><title>Generated%20HTML%20of%20%20'%20+%20location.href%20+%20'</title></head><pre>'%20+%20document.documentElement.innerHTML.replace(/&/g,%20'&amp;').replace(/</g,%20'&lt;')%20+%20'</pre></html>');%20win.document.close();%20void%200;

答案2

.+也匹配index.php。这是无限循环的原因。一些修复此问题的方法:

  1. RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_URI} !^/index\.php
    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
    
  2. RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-l
    
    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 
    RewriteCond %{ENV:REDIRECT_STATUS} 200 
    RewriteRule .* - [L]
    

相关内容