.htaccess 如何使用htaccess将domain.com更改为domain.com/文件夹

.htaccess 如何使用htaccess将domain.com更改为domain.com/文件夹,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我有这个文件夹结构 webroot/ www/ srv/ 当我访问时,它使用以下代码指向www/文件夹: RewriteCond %{HTTP:Host} ^(?:www\.)?domain\.com$ RewriteRule (.*) /www/$1 [NC,L,NS] 它显示地址栏上没有文件夹名称的www/文件夹的内容。其名称保留为: http://www.domain.com 我想要的是使用.htaccess mod_重写来更改: http://sub.domain.

我有这个文件夹结构

webroot/
    www/
    srv/
当我访问时,它使用以下代码指向www/文件夹:

RewriteCond %{HTTP:Host} ^(?:www\.)?domain\.com$
RewriteRule (.*) /www/$1 [NC,L,NS]
它显示地址栏上没有文件夹名称的www/文件夹的内容。其名称保留为:

http://www.domain.com
我想要的是使用.htaccess mod_重写来更改:

http://sub.domain.com

http://sub.domain.com/srv
其中显示子文件夹及其内容。可能吗?我试过:

RewriteCond %{HTTP:Host} ^(?:sub\.domain\.com)?$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/srv/$1 [R=301,L]

但它返回一个重定向循环错误。如何执行此操作?

您需要检查它是否已指向
/srv
。尝试:

RewriteCond %{HTTP:Host} ^(?:sub\.domain\.com)?$
RewriteCond %{REQUEST_URI} !^/srv/
RewriteRule ^(.*)$ http://%{HTTP_HOST}/srv/$1 [R=301,L]

我尝试使用此代码,但主机似乎没有捕获指令。当浏览器询问子域时,它会显示“目录列表被拒绝”。这意味着.htaccess文件无法捕获。您可以在这里访问输出:它仍然保持原样