2012-04-23 47 views
1

我通常會將我的mod_rewrite條件放在.htaccess文件中,但這是一個必須放入httpd.conf文件的情況。 我很困惑,因爲我想要做的事似乎很簡單: 網站的根目錄是一個嵌套的目錄:mydomain.com/foo/bar/ 只需要這樣。 我想寫一條規則,讓一個人可以輸入: mydomain.com/simple它會顯示來自mydomain/foo/bar的內容 另外,如果某個人點擊了該網站,我想要mydomain.com/simple/一些其他頁面結構要堅持。 我已經得到最接近的是這樣的:Apache mod_rewrite不會保留名稱

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule ^simple$ /foo/bar/$1 [PT] 
</IfModule> 

然而,使用這個法則,當一個人類型mydomain.com/simple它重寫URI在瀏覽器中mydomain.com/foo/bar 上午什麼我做錯了? 在此先感謝。

回答

1

首先,有可能是這個規則的一個問題:

RewriteRule ^simple$ /foo/bar/$1 [PT] 

表達^simple永遠不會得到匹配,因爲所有的請求將與/開始。

您在規則的右側使用$1,但在左側沒有匹配組來填充該規則。這意味着請求/simple會讓你/foo/bar/,但/simple/somethingelse的請求不符合規則。如果這不是你想要的行爲,你大概的意思是這樣的:

RewriteRule ^/simple(.*)$ /foo/bar$1 [PT] 

(請注意,我已經添加了丟失的前導/這裏也)。

隨着這些更改就位,此規則在我的系統上運行,我認爲您期待。

最後,打開RewriteLog並設置RewriteLogLevel(假設使用的是2.4之前的Apache版本)將有助於揭示具體發生的細節。