-2

我正在编写一个 htaccess 来处理我的链接以获得 seo 友好链接。但现在突然它说 500 Internal Server Error?? htaccess 的行数有限制吗?

.ht 访问:

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. 
4

1 回答 1

1

有几种方法可以调试你为什么.htaccess不工作,最快的一种是如果你可以访问 web 服务器配置文件,这样你就可以打开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 已启用并且 1 个或多个规则是正确的,例如可能缺少某些内容。

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

这样,您将查明问题出在哪里。

于 2013-09-08T21:46:06.970 回答