仅对特定子文件夹/项目使用 RewriteRule

仅对特定子文件夹/项目使用 RewriteRule

我在 Apache 的子文件夹“子文件夹”中有一个应用程序,因此我可以使用如下 URL:https://example.com/subfolder/#/v2/login而不是https://example.com/#/v2/login

.htaccess我的 htdocs 文件夹中的文件包含以下内容:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^(?!subfolder/).* subfolder/$0 [L,NC]

问题是它甚至对我的服务器的根 URL 进行重写;例如,如果我转到https://example.com/,我会在“子文件夹”中看到我的应用程序的主页。我希望此重写规则仅适用于“子文件夹”中的应用程序。

我也尝试将.htaccess文件放入“子文件夹”中,但没有用。

答案1

RewriteRule ^(?!subfolder/).* subfolder/$0 [L,NC]

要仅排除根 URL(在 中.htaccess),您可以更改RewriteRule模式以匹配 1 个或多个(.+)字符,而不是.*当前的 0 个或多个( ):

RewriteRule ^(?!subfolder/).+ subfolder/$0 [L,NC]

或者,要排除网站根目录中(或任何地方)存在的所有文件,请包含两个附加条件:

RewriteBase /subfolder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!subfolder/).+ $0 [L,NC]

相关内容