0

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

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

这是我的 htaccess 文件。

选项上的 RewriteEngine -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

4

2 回答 2

2

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

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

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

于 2013-07-23T05:15:48.153 回答
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 访问 site2 上的相应页面。

我不认为自己是专家,并欢迎有更多经验的人提出批评。

于 2014-02-04T18:25:08.103 回答