我有一个site1.com作为我的主要网站。我在根目录“site1”&中创建了两个文件夹。 “站点2”。我使用Htaccess将site1.com的流量重定向到文件夹“site1”。 Site2也使用目录“site2”作为site2.com。
现在,问题是因为site1是主要的,我可以通过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
答案 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上的相应页面。
我不认为自己是一个长镜头的专家,并欢迎那些有更多经验的人的批评。