。具有一个文档根的多个网站的.htaccess设置
问题描述:
我的Hoster允许多个网站,但只有一个DocumentRoot适用于所有域。。具有一个文档根的多个网站的.htaccess设置
我想什么是网站与不同的内容:
https://www.site1.com
https://www.site2.com
我有什么:
Directory Structure
/html/ <- Document root
/html/site1.com/ <- Symlink to /pages/site1.com/web
/html/site2.com/ <- Symlink to /pages/site2.com/web
如何它应该工作:
Browser: https://www.site1.com/folder/
<- this will internally gets internally redirected to /pages/site1.com/web/folder/
目前的.htaccess解决方案:
RewriteCond %{REQUEST_URI} !^/site1.com/.*$
RewriteCond %{HTTP_HOST} ^site1.com$ [NC]
RewriteRule ^(.*)$ /site1.com/$1 [L,NC]
它工作,如果我访问https://www.site1.com/folder/。
但问题是我不想要:
1)如果我访问site1.com/folder(没有最后的斜线),Web服务器将自动重定向到https://www.site1.com/site1.com/folder/而不是https://www.site1.com/folder/。 我认为这是由于Apache的自动跟踪斜杠功能(共享虚拟主机与有限的SSH帐户)。 一个可能的解决方案是重定向301所有网络浏览器https:// 网站/sitefolder .com /请求uri的非/site1.com/请求uri's。 但我测试的每个htaccess规则失败。我不想让http://www.site1.com/site1.com & https://www.site1.com/site2.com由于重复的内容而可访问。
我该如何解决这个问题,并将一个文档根目录与多个域作为没有重复内容的子目录/重定向到子文件夹内?
答
这不可能在3行来,所以这里是我会做什么:
RewriteEngine On
# First we check if we have a direct access to our folder and prevent it with a 404 Error
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} ^/?site1\.com(/.*)?$ [NC]
RewriteCond %{REQUEST_URI} ^/?site2\.com(/.*)?$ [NC]
RewriteRule ^.*$ - [R=404,L]
# Optional you can redirect all non-www to www, http or https stay the same
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteRule ^/?(.*)$ %{REQUEST_SCHEME}://www.%1/$1 [R=301,L]
# Now we rewriting all request based on the requesting host works with www and non-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^/?(.*)$ /%1/$1 [L]
答案假设该文件夹被称为一样的主机,但没有龙头www.
,你有它在你的问题。所以对于http://www.example.com
该文件夹必须是example.com
。
你可以使用完整的URL(包括http)更改示例吗?如果'site1.com/site1.com/folder /'应该是'http:// site1.com/site1.com/folder /'或'http://site1.com/site1.com/site1',我很困惑.com /文件夹/' 如果你的意思是从Server的角度来看文件夹的加入'/ html /'eg:'/ html/site1.com/site1.com/folder /' – Webdesigner
感谢评论,done – emovere