簡體   English   中英

子域.htaccess的無聲重寫/重定向

[英]Silent rewrite / redirect with subdomain .htaccess

我有結構:

public/test1
public/test1/a
public/test1/b

public/test2
public/test2/a
public/test2/b

我想重寫/重定向如下:

test1.domain.com -> redirect to -> domain.com/test1 and user see -> test1.domain.com

test1.domain.com/a -> redirect to -> domain.com/test1/a and user see -> test1.domain.com/a

test2.domain.com -> redirect to -> domain.com/test2 and user see -> test2.domain.com

test2.domain.com/a -> redirect to -> domain.com/test2/a and user see -> test2.domain.com/a

所有重定向/重寫都是靜默的。 我該如何解決?

如果主機名由相同的http服務器提供服務,則可以使用內部重寫來捕獲一個請求的主機名的第一個標記,其條件如下:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.org$
RewriteRule ^/?(.*)$ /%1/$1 [END]

如果您使用的是apache http服務器的舊版本,則可能必須用L標志替換END標志,這在這種情況下也應該起作用。 如果您遇到http狀態500(服務器內部錯誤),請嘗試該操作。 在這種情況下,您也絕對應該監視您的http服務器錯誤日志文件。

如果相反,這兩個主機名不是由服務於較短域名的同一http服務器提供的,則最好的方法可能是使用內置代理模塊在內部將請求中繼到該服務器。

還有一個一般性提示:您應該始終喜歡將此類規則放置在http服務器(虛擬)主機配置中,而不是使用動態配置文件( .htaccess樣式文件)。 眾所周知,這些文件容易出錯,難以調試,並且確實降低了服務器的速度。 僅當您無法控制主機配置(閱讀:真正便宜的托管服務提供商)或者您的應用程序依賴於編寫自己的重寫規則(這顯然是安全噩夢)時,才提供它們作為最后的選擇。 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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