有几种方法可以调试你为什么.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 个或多个规则是正确的,例如可能缺少某些内容。
但是从上面你只会知道你有问题,通过使用消除方法你会找到导致问题的确切行,这是通过注释所有行然后一一取消注释,测试该行是什么应该在移动到下一行之前做。
这样,您将查明问题出在哪里。