Apache 在URL中隐藏文件夹,但如果URL中只有域,则不隐藏

Apache 在URL中隐藏文件夹,但如果URL中只有域,则不隐藏,apache,.htaccess,url,mod-rewrite,Apache,.htaccess,Url,Mod Rewrite,我想在我的URL中隐藏文件夹“main”。因此,如果有一个类似以下的文件: my_domain.com/main/something.php 我得到: my_domain.com/something.php 我找到的最佳解决方案是: RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+main/([^\s]+) [NC] RewriteRule ^ %1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f Rewr

我想在我的URL中隐藏文件夹“main”。因此,如果有一个类似以下的文件:

my_domain.com/main/something.php

我得到:

my_domain.com/something.php

我找到的最佳解决方案是:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+main/([^\s]+) [NC]  
RewriteRule ^ %1 [R=301,L]  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule (?!^main/)^(.*)$ /main/$1 [L,NC]
它可以正常工作,但当URL中只有“my_domain.com”时就不行了。
然后我得到“您没有权限访问此服务器上的/main/”,因为URL可能已更改为“my_domain.com/main/”

如何修改它,使其仅在URL中存在域以外的内容时工作?

您可以使用:

RewriteCond %{THE_REQUEST} \s/+main/([^\s]+) [NC]  
RewriteRule ^ %1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ^((?!^main/).+)$ /main/$1 [L,NC]