我不想讓人們能夠在我的網站中註冊他們自己的部分,並讓這些部分成爲我的網站的子域。所以有人可以註冊'測試',並有'test.example.com'參考他們的網站,這將是說/ site.php?id = 1那麼我怎麼會去寫一個mod_rewrite規則呢?對子域名使用mod_rewrite
2
A
回答
2
mod_rewrite
可能不是最好的工具。 RewriteRules非常適合將文件映射到其他內容,但它並非真正意義上的域匹配。
您可以使用mod_rewrite
做的最好的是:
RewriteEngine On
# Skip www.domain.com
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule ^/(.*)$ site.php?domain=%1&file=$1 [L]
這是不是真的有用。我會建議做的,而是如果以編程方式檢查這樣的HTTP_HOST
值:
function get_subdomain() {
if(preg_match('/^([^.]+)\.domain\.com/i', $_SERVER['HTTP_HOST'], $matches))
return $matches[1];
}
0
您可以配置Apache要求在Apache配置中的「特殊」的領域(如www.mydomain.com等),在您的虛擬主機容器中,並讓其他人默認訪問您的第一個虛擬主機。然後,您可以將基礎URL重寫爲調度應用程序,該應用程序將檢查URL並將用戶發送到正確的區域。
從Apache 2.0的文檔:
幾乎所有的Apache命令都可以 進入虛擬主機容器。 第一個VirtualHost部分用於 沒有已知服務器名稱的請求。
把代碼來處理* .mydomain.com來在第一虛擬主機:
<VirtualHost *:80>
Servername custom.mydomain.com
DocumentRoot /var/www/html/custom
RewriteEngine on
RewriteRule ^/$ /var/www/cgi-bin/dispatch.cgi [R]
# more configs here
</VirtualHost>
<VirtualHost *:80>
Servername www.mydomain.com
DocumentRoot /var/www/html/homepage
# more configs here
</VirtualHost>
在dispatch.cgi,檢查URL呼叫,以確定用戶應該去。確保你設置你的DNS接受所有子域名。
希望有幫助!
0
實際上,我們一直在使用這種技術,在過去的一年中沒有太多問題。我們mod_rewrite的配置是這樣的:
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} !www.mydomain.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com
RewriteCond %{REQUEST_URI} !admin
RewriteRule (.*) /admin/ [R=301,L]
RewriteRule ^admin(.*)$ hosted/admin/$1 [QSA,L]
會發生什麼事,就是將用戶定向到theiraccount.mydomain.com/admin。
然後我們使用PHP來識別域名的帳戶部分。使用諸如$ _SERVER ['SERVER_NAME']之類的東西或者一些獲取域名和分析它的方法非常有效。
儘管將這些配置保存在httpd.conf中,但如果保存爲.htaccess,這將成爲高流量站點中的cpu問題。
相關問題
- 1. mod_rewrite和子域名
- 2. 虛擬域名和子域名使用mod_rewrite
- 3. mod_rewrite通配符子域名
- 4. Apache mod_rewrite域名
- 5. mod_rewrite名字域
- 6. .htaccess MOD_REWRITE子域
- 7. htaccess mod_rewrite子域
- 8. htaccess子域不能使用mod_rewrite啓用
- 9. 如何使用mod_rewrite將子域重寫爲包含子域名的路徑?
- 10. mod_rewrite直接訪問子域名
- 11. mod_rewrite保留URL中的子域名
- 12. mod_rewrite的與子域名和URL模式
- 13. mod_rewrite如何添加子域名?
- 14. mod_rewrite:不要重寫任何子域名
- 15. 使用mod_rewrite刪除國家域名
- 16. Apache mod_rewrite域到子域?
- 17. Apache MOD_REWRITE域名Cookie
- 18. 使用Apache 2.2 mod_rewrite來合併子域
- 19. Apache的mod_rewrite子域
- 20. 根據子域名使用mod_rewrite附加參數
- 21. mod_rewrite;子域&子目錄
- 22. htaccess mod_rewrite子目錄子域
- 23. mod_rewrite多域名重寫域名
- 24. miltiple域名/子域名使用htaccess
- 25. mod_rewrite的域名目錄
- 26. Apache mod_rewrite到域名/ IP
- 27. mod_rewrite不能與子域
- 28. mod_rewrite a .html到子域
- 29. mod_rewrite:子域到控制器
- 30. mod_rewrite的子域目錄