2012-03-05 87 views
1

我無法爲我的.htaccess文件創建腳本。將特殊子域重寫爲特殊腳本並將所有子域重寫爲腳本

我想下面重複寫:

  • www.domain.tld -> domain.tld(沒問題)
  • admin.domain.tld/(.*) -> domain.tld/?show=admin$1
  • (everyothersubdomain).domain.tld -> domain.tld/?show=everyothersubdomain(我創建了一個通配符子域)

是任何人都擅長此道?幾次嘗試使用Error 500或簡單地沒有任何get參數的索引頁(index.php只是print_r($ _ GET))後,我失敗了。

謝謝

+0

請顯示您的嘗試 – Gerben 2012-03-05 14:41:57

回答

0

感謝@Death我想出了這個解決方案對自己說:

RewriteCond %{HTTP_HOST} ^(admin|special1|special2)\.domain\.tld$ [NC] 
RewriteRule (.*) index.php?mode=%1 [L,NC,QSA] 

RewriteCond %{HTTP_HOST} www\.domain\.tld [NC] 
RewriteRule (.*) http://domain.tld/$1 [L,R=301,QSA] 

RewriteCond %{HTTP_HOST} ^(.*)\.domain\.tld$ 
RewriteRule (.*) index.php?show=%1 [L,NC,QSA] 

我做了一些試驗用的index.php,這僅僅是運行:

<?php print_r($_GET); ?> 

並且每個測試運行都完美無缺!

+0

只是一些測試結果:'admin.domain.tld - > Array([mode] => admin)'和'asdf.domain.tld - > Array([show] => asdf)' – Maddis 2012-03-06 05:02:51

1

我自己沒有測試過,但它應該工作。

RewriteCond %{QUERY_STRING} show=(.*) 
RewriteRule ^(index\.php|)$ http://%1.domain.tld [R=301,L] 
RewriteRule ^(admin|special1|special2)\.php http://$1.domain.tld [R=301,L] 
RewriteCond %{HTTP_HOST} ^(admin|special1|special2)\.domain\.tld$ [NC] 
RewriteRule (.*) http://domain.tld/%1.php [L,NC,QSA] 

RewriteCond %{HTTP_HOST} www\.domain\.tld [NC] 
RewriteRule (.*) http://domain.tld/$1 [L,R=301,QSA] 

RewriteCond %{HTTP_HOST} ^(.*)\.domain\.tld$ 
RewriteRule (.*) http://domain.tld/?show=%1[L,NC,QSA] 

如果用戶在他的瀏覽器http://domain.tld/admin.php,那麼他將被重定向到http://admin.domain.tld。但如果他輸入http://admin.domain.tld,他將不會被重定向到外部。讓我知道如果這是你想要的。

+0

您可能需要將'R = 301'標誌添加到其他規則中。沒有這個,重定向會在服務器端靜靜地發生。有了它,它會傳回客戶端,以便客戶端瀏覽器知道重定向;它可以緩存它,並在將來自動執行 – TerryE 2012-03-05 12:15:22

+0

嗯,這不完全是我正在尋找的,但一個好的開始 - 謝謝你。 我確實希望它是無聲的。瀏覽器顯示:'admin.domain.tld' - >服務器端:'domain.tld/admin.php'或者瀏覽器:'(anyotherdomain),我們可能會有點不確定,我會嘗試做一個更好的例子: .domain.tld' - >服務器:'domain.tld/index.php?show =(anyotherdomain)' 所以我基本上只是想讓這些域更加「容易理解」,所以沒有醜陋的index.php ?show = XXXXX,但是一個XXXXX.domain.tld。但線索是,我想要一些特殊的腳本,我可以定義一些「保留」子域,例如。 admin.php – Maddis 2012-03-06 00:35:54

+0

現在測試!!!!! – undone 2012-03-06 02:00:44