2013-07-23 113 views
0

我有一个site1.com作为我的主站点。我在根目录“site1”&“site2”中创建了两个文件夹。我使用Htaccess将site1.com的流量重定向到文件夹“site1”。 Site2和site2.com一样使用目录“site2”。htaccess - 在一台共享服务器上托管多个域,

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

这是我的htaccess文件。

上 选项-MultiViews RewriteEngine叙述

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

未经测试的代码:我相信你可以做以下

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

+0

这很好,在那里我可以抛出404错误,而不是重定向用户,如果他们访问该页面? – Darius

+1

我相信'RewriteRule^site2 /(.*)$-- [R = 404,L]'会起作用 – Sumurai8

2

我对Godaddy发生类似问题的方向不同。

而不是寻找从site1.com只命中,将用户重定向,我送击中SITE2子文件夹/子域名的任何请求site2.com本:

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

现在任何蠕虫他们的方式进入的请求该site1.com/site2子文件夹获得301'd到site2上的相应页面。

我不认为自己是一位长期专家,并欢迎有更多经验的人的批评。

相关问题