如何在转发到子目录时从URL中删除子目录?

时间:2013-07-30 03:35:05

标签: .htaccess url-rewriting

在共享服务器上,我被迫从cpanel管理域的文档根,这是错误的并且消耗大量时间。所以我将所有域重定向到一个目录,让我们说root。一个例子:

sd1.domain.com  ---> public_html/web/
sd2.domain.com  ---> public_html/web/
sd1.domain2.com ---> public_html/web/
sd2.domain2.com ---> public_html/web/

当用户浏览这些网站时,我使用htaccess规则转发此网站,例如

RewriteCond %{HTTP_HOST}   ^sd1.(domain1|domain2).com [NC]
RewriteCond %{REQUEST_URI} !^/sd1/.*
RewriteRule   ^(.*)  sd1/$1  [L]

现在这确实将请求转发到了不同的文件夹,但之后所有的网址都在最后一部分附加了sd1

这是一个例子

sd1.domain.com            ---> sd1.domain.com                 #Works correctly
sd1.domain.com/page1.html ---> sd1.domain.com/sd1/page1.html  # See the word sd1 on the middle

如何从网址中删除文件夹部分?

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,你应该能够通过使用标志PT(Passthru)来实现,这会导致重写目标被传递回URL映射引擎:

RewriteCond %{HTTP_HOST}   ^sd1.(domain1|domain2).com [NC]
RewriteCond %{REQUEST_URI} !^/sd1/.*
RewriteRule   ^(.*)  sd1/$1  [PT,L]

希望它有所帮助。