2012-10-08 105 views
0

我想我誤解了一些基本的東西,因爲這是我第一次使用mod_rewrite只轉發子域的根目錄到主域中的文件夾(mod_rewrite)

我想以下幾點:

blog.example.com 
blog.example.com/ 
blog.example.com/index.php 

重定向到:

example.com/blog 

不過,我想所有其他情況下什麼也不做,例如

blog.example.com/foobar 
blog.example.com/wp-admin 
blog.example.com/wp-admin.php 

這是我目前的.htaccess:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} =blog.example.com 
RewriteCond %{REQUEST_URI} ^|/|index\.php$ 
RewriteRule ^(.*)$ http://www\.example\.com/blog [QSA,L] 

我已經嘗試了很多變種,但每次要麼全部請求重定向或不重定向,所以mod_rewrite肯定是做什麼的,我想只是沒有什麼。

我已經通過this post瀏覽了任何相關內容,但我認爲這個問題更多的是由於缺乏經驗而遺漏了一些微妙的事實。有人會好好指出我的錯誤嗎?我知道我們並不需要另一個mod_rewrite問題,但我真的很苦惱這個。提前致謝。

+0

您發佈的內容是'all redirects'or'none redirects'? – Nelson

+0

@Nelson - 所有的請求重定向爲上面的例子:( –

回答

1

試試這個:

RewriteEngine On 
RewriteCond %{HTTP_HOST} =blog.example.com [NC] 
RewriteRule ^/?(index\.php)?$ http://www.example.com/blog [QSA,R,L] 

一些基本要點:

  1. 重寫規則的第二部分是不是正則表達式,所以時間不需要在那裏逃脫。

  2. 我不熟悉RewriteCond的= String選項。謝謝你今天教給我一些東西(當我在那裏沒有看到正則表達式時,我很擔心)但是這應該沒問題!我會在這裏添加[NC],因爲它有助於匹配您網域的小寫和大寫版本。

  3. 這些都不會起作用,除非您的虛擬主機將blog.example.com子域包含爲適當的別名,並且爲該子域設置了DNS。

+0

編輯的答案反映=字符串是一個有效的形式RewriteCond –

+0

這工作!迴應你的觀點。(1)明白,謝謝。(2)其實,我認爲(''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''可以匹配字面(非正則表達式),至少我可以使用''blog.globalcitizenstravel.com'''工作!感謝您的提示 –

+0

哦,你在編輯我的評論時編輯了你的答案,好吧,我不知道''[NC]''也非常感謝! –

相關問題