由htaccess引起的500服务器错误

时间:2013-09-08 20:21:29

标签: .htaccess

我正在编写一个htaccess来处理我的友情链接链接。但现在突然它说500内部服务器错误? htaccess的线路是否有限制?

htaccess的:

ErrorDocument 404 /404/404.html

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteRule ^choose/[a-zA-Z0-9]+)/?$ choose.php?gebruikersnaam=$1 [L,QSA,NC]

blabla, some stuff you don't need to see anymore. 

1 个答案:

答案 0 :(得分:1)

有几种方法可以调试.htaccess无法正常工作的原因,最快的方法是,如果您可以访问网络服务器配置文件,那么您可以打开RewriteLog,这将指明它在哪里对你失败了:

RewriteLog "/path_to_save_it/rewrite_log" 
RewriteLogLevel 9

另一种方法是将规则放在IfModule指令中:

<IfModule mod_rewrite.c>
# your rule comes here
</IfModule>

例如:

Options +FollowSymLinks -MultiViews

<IfModule mod_rewrite.c>
ErrorDocument 404 /404/404.html

# Turn mod_rewrite on
RewriteEngine On

RewriteRule ^show/([0-9]+)/?$ show.php?photo=$1 [L,QSA,NC]
RewriteRule ^report/([0-9]+)/?$ report.php?photo=$1 [L,QSA,NC]
RewriteRule ^index/?$ index.php [L,QSA,NC]
RewriteRule ^album/?$ album.php [L,QSA,NC]
RewriteRule ^choose/?$ choose.php [L,QSA,NC]
RewriteRule ^choose/[a-zA-Z0-9]+)/?$ choose.php?gebruikersnaam=$1 [L,QSA,NC]
RewriteRule ^rules/?$ rules.php [L,QSA,NC]
RewriteRule ^winners/?$ winners.php [L,QSA,NC]
RewriteRule ^contact/?$ contact.php [L,QSA,NC]
RewriteRule ^forget-password/?$ password.php [L,QSA,NC]
RewriteRule ^forget-password/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ password.php?gebruiker=$1&wachtwoord=$2 [L,QSA,NC]
RewriteRule ^upload-picture/?$ upload.php [L,QSA,NC]
RewriteRule ^user-cp/?$ user-photo.php [L,QSA,NC]
RewriteRule ^user-cp/delete/([0-9]+)/?$ user-photo.php?delete=$1 [L,QSA,NC]
RewriteRule ^user-cp/yes/([0-9]+)/?$ user-photo.php?yes=$1 [L,QSA,NC]
RewriteRule ^logout/?$ logout.php [L,QSA,NC]
RewriteRule ^mail-second/?$ mail_second.php [L,QSA,NC]
RewriteRule ^activate/?$ activate.php [L,QSA,NC]
RewriteRule ^activate/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ activate.php?code=$1&gebruikersnaam=$2 [L,QSA,NC]
</IfModule>

如果您的所有规则都没有问题,但未启用mod_rewrite,则不会出现任何错误,因此如果您尝试任何规则,您将知道mod_rewrite未启用。

如果你仍然得到错误那么这意味着mod_rewrite是启用的,一个或多个规则是正确的,就像错过了一些东西。

但是从上面你只会知道你有问题,通过使用消除方法你会找到导致问题的确切行,这是通过注释所有行然后逐个取消注释,测试什么该行应该在移动到下一行之前完成。

通过这种方式,您可以确定问题所在。