2016-05-03 169 views
0

我想重寫我的主域到一個路徑,如果沒有查詢附加到另一個路徑。我有一個通配符C名稱來支持子域名。htaccess重寫子域到一個文件夾

www.xxx.com =>正常工作

abc.xxx.com =>指向一個文件夾

abc.xxx.com/abc-xyz =>指向www.xxx.com通常應

工作,這就是我現在所擁有的:

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 

    RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$ 
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$ 
    RewriteRule ^$ portfolio/index.php?pageDetailId=%1 [NC,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 

    RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$ 
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$ 
    RewriteRule ^(.*)$ $1?pageDetailId=%1 [QSA,L] 
</IfModule> 

正如我們所看到的,我需要在abc.example.com/abc-xyz ABC作爲變量。請回答與任何懷疑,我嘗試了很多方式,它不工作。同樣的htaccess可以順利地在1個域上運行,但是當我創建一個新的域時,它並不能正常工作。謝謝。

注意:它的工作原理上的httpd但不能在Apache2的

+0

什麼是不工作的網址,以及如何它應該如何處理? – anubhava

+0

abc.example.com沒有指向'portfolio/index.php',意思是'RewriteRule^$ portfolio/index.php?pageDetailId =%1 [NC,L]'不起作用 –

回答

1

有這樣的:

Options +FollowSymlinks 
RewriteEngine On 

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{HTTP_HOST} ^(?!www\.)([\w-]+)\.example\.com$ [NC] 
RewriteRule ^(index\.php)?$ portfolio/index.php?pageDetailId=%1 [NC,L,QSA] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteCond %{HTTP_HOST} ^(?!www\.)([\w-]+)\.example\.com$ [NC] 
RewriteRule ^(.+)$ index.php?pageDetailId=%1&/$1 [L,QSA] 

RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
+0

它不起作用。我刪除了所有規則並保留:RewriteCond%{HTTP_HOST} ^(?! www \。)([\ w - ] +)。example \ .com $ [NC] RewriteRule^$ portfolio/index.php?pageDetailId =%1 [NC,L]內部路徑沒有改變爲'portfolio /',它仍然指向主索引。 –

+0

A1。是的,我在瀏覽器中輸入了http://abc.example.com,打開http://abc.example.com/index.php?pageDetailId =%1'。這個規則可以在httpd(舊服務器)中正確打開,但不適用於apache2(新服務器)。 A2。當我在瀏覽器中輸入http://abc.example.com/portfolio/index.php?pageDetailId = abc'時,它也會打開。 –

+0

是的,你是對的! –