htaccess 添加超过 3 个规则时显示错误 500

htaccess displays error 500 when adding more than 3 rules

这是我的 htaccess:

Options All -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^home index.php
RewriteRule  ^register register.php
RewriteRule  ^rules rules.php [L]

当我向 htaccess 添加第四条规则时 returns 500 错误。 所以 htaccess 只允许 3 个重写规则?

第一件事是,当您收到错误时,您应该始终检查您的 Apache error_log 文件。它会给你错误的具体原因。我们只会猜测您的问题可能是什么。

现在这可能不是 "the" 问题,但是 RewriteCond 仅适用于紧随其后的 RewriteRule。您不能对所有规则使用相同的条件。您还应该养成在规则上使用 [L] 标志的习惯,以防止它在匹配后读取下一条规则。

Options All -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^home/?$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^register/?$ register.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^rules/?$ rules.php [L]