[英]confused about .htaccess subdomain rewrite (not redirect)
我有2个指向网站根目录的域:
http://site1.com
http://site2.com
both point to http://dXXXXXXX.domain.com/
我将每个站点设置为在子目录(同名)中查找其文件,因此
http://site1.com files are located in http://dXXXXXXX.domain.com/site1/
http://site2.com files are located in http://dXXXXXXX.domain.com/site2/
我想为site1(可能还有site2)创建一个特殊的子域,该子域实际上指向主目录中的文件夹(两个域都可以共享的论坛)。 我想用子域网址屏蔽真实网址,如下所示:
http://subdomain.site1.com masks http://dXXXXXXX.domain.com/shared_folder/ (not redirected)
我的.htaccess文件(在最顶层的目录中)如下所示:
Options +FollowSymLinks
RewriteEngine On
# Rewrite "www.domain.com -> domain.com"
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>
# redirect site1.com to /site1 [folder]
# redirect site2.com to /site2 [folder]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^([^0-9]+)$ [NC]
RewriteRule ^(.*)$ /%1/$1 [QSA,L]
#i think this should work but it doesn't
#RewriteCond %{HTTP_HOST} ^subdomain\.site1\.com$ [NC]
#RewriteRule ^$ shared_folder [P]
另外,如果可能的话,我想将每个域的绝对路径重定向到我的首选路径,如下所示:
http://dXXXXXXX.domain.com/site1/ redirects to http://site1.com
http://dXXXXXXX.domain.com/site2/ redirects to http://site2.com
不确定是否有人会找到这些链接,但我想通过没有针对同一内容的多个访问点来保持所有内容的干净(故意共享的CSS或论坛软件除外)
在此先感谢您为我提供的帮助或见解
我想我已经弄清楚了(因为它还没有坏!)
Options +FollowSymLinks
RewriteEngine On
# Rewrite/Redirect "www.domain.com -> domain.com"
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# Rewrite/Redirect "domain.com/foo -> domain.com/foo/"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
RewriteRule ^(.*)$ /$1/ [R=301,L]
# Redirect/Pass through "subdomain.site1.com to /shared_folder/"
RewriteCond %{HTTP_HOST} ^subdomain\.([\w.]+)$ [NC]
RewriteRule ^(.*)$ /shared_folder/ [L]
# Redirect/Pass through site1.com to /site1 [folder]
# Redirect/Pass through site2.com to /site2 [folder]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^([^0-9]+)$ [NC]
RewriteRule ^(.*)$ /%1/$1 [QSA,L]
这样就行了,但是我不确定规则的位置:是否最好像现在这样处理在子域之前的特殊子域情况; 或者,如果RewriteRule ^(.*)$ /shared_folder/ [L]
最好写成RewriteRule ^$ /shared_folder/ [L]
...
如果您对好的或更好的做法有任何见解,谢谢,谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.