簡體   English   中英

混淆.htaccess子域重寫(不重定向)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM