htaccess - 在一个共享服务器上托管多个域,

时间:2013-07-23 05:11:45

标签: .htaccess

我有一个site1.com作为我的主要网站。我在根目录“site1”&中创建了两个文件夹。 “站点2”。我使用Htaccess将site1.com的流量重定向到文件夹“site1”。 Site2也使用目录“site2”作为site2.com。

现在,问题是因为s​​ite1是主要的,我可以通过site.com/site2访问site2。我可以使用哪些重写来忽略site.com/site2,或者在访问site1.com/site2时显示404并仍然允许site2.com工作?

这是我的htaccess文件。

RewriteEngine on 选项-MultiViews

RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteCond %{REQUEST_URI} !^/site1/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site1/$1
RewriteCond %{HTTP_HOST} ^(www.)?site1.com$ 
RewriteRule ^(/)?$ site1/index.php [L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

我的文件夹层次结构是

-root
    .htaccess 
    -site1 folder
          - index.php
    -site2 folder
          - index.php

由于godaddy的主要域名设置,即使我访问site.com时它会从site1文件夹加载信息,如果我访问site1.com/site2它将加载站点2

2 个答案:

答案 0 :(得分:2)

未经测试的代码:我相信您可以执行以下操作

RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteRule ^site2/(.*)$ http://site1.com/$1 [R=301]

这会(或应该)将客户端从http://site1.com/site2/my/awesome/page.php重定向到http://site2.com/my/awesome/page.php

答案 1 :(得分:2)

我在 Godaddy 上针对类似问题采取了不同的方向。

我没有找到来自site1.com的点击并重定向它们,而是通过以下方式向site2.com发送了访问site2子文件夹/子域名的任何请求:

RewriteCond %{HTTP_HOST} !^site2\.com$ [NC]
RewriteRule ^(.*)$ http://site2.com/$1 [R=301,L]

现在任何蠕虫进入该site1.com/site2子文件夹的请求都会被301到site2上的相应页面。

我不认为自己是一个长镜头的专家,并欢迎那些有更多经验的人的批评。