.htaccess mod重写子域到文件夹

时间:2014-05-12 23:20:20

标签: apache .htaccess mod-rewrite rewrite

我搜索并阅读了很多......但没有任何作用。

我正在尝试重写

subdomain.domain.com domain.com/folder / 然后,当这个工作时,我想拥有域很容易。 COM /文件夹/子域

我尝试将其放在.htaccess文件中,该文件位于服务器的根目录中。

RewriteCond %{REQUEST_URI} !^/folder/
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com
RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteRule ^(.*)$ /folder/ [L]

但是我收到了Not Found错误:

  

在此服务器上找不到请求的URL /文件夹。

     

此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误。

     

Apache / 2.4.9(Unix)OpenSSL / 1.0.1e-fips mod_bwlimited / 1.4服务器在subdomain.domain.com端口80

http://domain.com/folder/确实存在。

重定向确实有效,但这不是我想要的:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain.domain.com
RewriteRule ^(.*)$ http://domain.com/folder/subdomain/$1 [L,NC,QSA]

为了帮助我理解发生了什么,我将[L]更改为[R](在第一段代码中),

RewriteRule ^(.*)$ /folder/ [R]

和重定向,这是一个无限循环,转到

http://subdomain.domain.com/folder/ 不要 http://domain.com/folder/ 如预期......

我该如何纠正?如何让重写“离开”子域?

1 个答案:

答案 0 :(得分:0)

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$
RewriteRule . http://domain.com/folder/%1%{REQUEST_URI}

表示subdomain.domain.com/somefile.html - > domain.com/folder/subdomain/somefile.html。 子域必须指向与域相同的虚拟主机。