更新-now apache没有给出任何错误。我之前也见过这个。 99%的时间它会抛出错误500.请看这个截图。它没有显示任何错误。
我不知道如何解决这个问题。它有时会再次开始显示
我创建了一个页面,当我们打开时似乎是正常的页面但是在chrome和mozilla中它会出错。
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
http://imgur.com/a/macb7
页面是http://xxxxxx.com/mobile-under-10000
并且我发现如果我将链接的名称更改为http://xxxxxxx.com/mobile并添加类,则不会给出错误。我不能在10000以下的移动设备中添加php类,因为类不允许 - 但我真的需要这个名字就像它的seo友好。 如果我创建这样的页面它可以工作但我必须只选择classname中的一个单词。我有成千上万的链接工作正常,但给出500错误。
<?php
class samplelink {
function index() {
echo 'write something';
}
}
?>
任何想要解决的想法都会很棒。我有一个选项强制apache停止抛出500错误。但这是可取的吗?我正在使用带有apache的nginx。
请告知
我的.htaccess代码是
RewriteEngine on
RewriteCond ${LeechProtect:/home/xxxxxx/public_html:%{REMOTE_USER}:%{REMOTE_ADDR}:10} leech
RewriteRule .* http://xxxxxx.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([0-9a-z_/\-]+)/$ index.php\?p=$1 [QSA]
RewriteRule ^([0-9a-z_/\-]+)$ index.php\?p=$1 [QSA]
</IfModule>
RewriteRule ^.* - [F,L]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.xxxxx\.com$ [NC]
RewriteRule ^.*$ http://xxxxxx.com%{REQUEST_URI} [R=301,L]
答案 0 :(得分:0)
如果你的Apache,和 PHP / MySQL错误日志都是空的,那么.htaccess
/ httpd.conf
导致这个问题非常强烈,所以请检查这些不一致的文件。
我发现如果我将链接名称更改为http://way2enjoy.com/mobile并添加类,则不会出现错误
这有力地表明您没有正确转义.htaccess
中的字符。
修改强>
这些行:
RewriteRule ^([0-9a-z_/\-]+)/$ index.php\?p=$1 [QSA] RewriteRule ^([0-9a-z_/\-]+)$ index.php\?p=$1 [QSA]
可以重写并完全转义为:
RewriteRule ^([0-9a-z_\/\-]+)/?$ index.php\?p=$1 [QSA]
你的htaccess
中有一些好奇的行为,但没有任何东西可以作为潜在的致命问题跳出来。
有些观点:
reWriteEngine On
三次,这可能会导致错误,因此您可以删除两次。我已重新整理您的代码:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([0-9a-z_\/\-]+)/?$ index.php\?p=$1 [QSA]
RewriteCond ${LeechProtect:/home/xxxxxx/public_html:%{REMOTE_USER}:%{REMOTE_ADDR}:10} leech
RewriteRule .* http://xxxxxx.com
RewriteCond %{HTTP_HOST} ^www\.xxxxx\.com$ [NC]
RewriteRule ^.*$ http://xxxxxx.com%{REQUEST_URI} [R=301,L]
</IfModule>
RewriteRule ^.* - [F,L]
最后一行返回一个Forbidden标题结果(403),如果它已经到达,这似乎是非常沉重的,可能是无意义的响应。
我也质疑leechProtect
声明,但对此不太了解,无法提供进一步的建议。但是使用上面的代码,然后检查你的网站注释掉(#comment
)每一行,然后清除你的浏览器缓存(每次,因为浏览器缓存htaccess规则),看看是否注释掉其中一些请求导致网站没有返回500
个错误。