RewriteEngine 每次都在 <IfModule mod_rewrite.c> 中开启?

问题描述 投票:0回答:2

我想知道当 RewriteEngine On 嵌入 IfModule mod_rewrite.c 中时,我是否只能在 htaccess 中使用它一次,还是每次都必须使用它因为它是嵌入的?

参见下面的示例。谢谢

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} /?author   [NC]
RewriteRule .* - [F]
</ifModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} g=  [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
apache .htaccess mod-rewrite url-rewriting webserver
2个回答
20
投票

您应该能够对所有重写代码进行一次检查。

我从你的代码中怀疑你正在工作的网站将无法正常运行,或者根本没有启用 mod_rewrite。在这种情况下,我会完全省略对 mod_rewrite 的检查,如果未启用,则让网络服务器失败。

如果您最终遇到将代码安装在未启用 mod_rewrite 的网络服务器上的情况,则调试和查明确切问题会容易得多。


0
投票

您可以将代码合并到单次检查中,如果出现错误,请检查错误日志以进一步解决。

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} /?author   [NC]
RewriteRule .* - [F]

RewriteCond %{QUERY_STRING} g=  [NC]
RewriteRule ^(.*)$ - [F,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</ifModule>

© www.soinside.com 2019 - 2024. All rights reserved.