首页 > 解决方案 > 这是 RewriteRule 冗余吗?

问题描述

我在文件夹中找到了一个.htaccess文件/htdocs/wordpress/

urlwww.example.com指向/htdocs目录。

Wordpress 被调用www.example.com/wordpress

这是的内容.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

我在https://stackoverflow.com/a/27913187/2311074中发现

像这样使用 RewriteBase ...

RewriteBase /folder/
RewriteRule a\.html b.html

本质上与...相同

RewriteRule a\.html /folder/b.html

但是当 .htaccess 文件在 /folder/ 中时,它也指向同一个目标:

RewriteRule a\.html b.html

所以我想它不需要?此外,我看不到什么

RewriteRule ^index\.php$ - [L]

是在做。它重定向到哪里?无论如何,最后一切都会重定向到

RewriteRule . /wordpress/index.php [L]

所以第一个 RewriteRule 无论如何都会被重写,对吧?

上面的.htaccess文件是否等同于:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

标签: .htaccess

解决方案


如果我是正确的,此规则将阻止此处直接访问 index.php,当用户尝试直接访问 index.php 时,“-”将执行 403 禁止访问。

RewriteRule ^index\.php$ - [L]

推荐阅读