我在 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]