2012-12-06 32 views
0

我的webroot是example.com。我在webroot下有兩個子目錄,分別命名爲sub1sub2。裏面sub1我已經放在以下.htaccess由Apache RewriteEngine困惑

RewriteEngine On 
RewriteCond %{REQUEST_URI} test\.me$ [NC] 
#RewriteRule ^(.*)$ http://example.com/sub2/foo.html [L] 
RewriteRule ^(.*)$ /sub2/foo.html [L] 

當有人試圖訪問http://example.com/sub1/test.me,我希望他們能夠送達http://example.com/sub2/foo.html

以上.htaccess不起作用。如果我使用完整路徑取消註釋RewriteRule,並使用相對於webroot的路徑註釋掉RewriteRule,則它幾乎按預期工作(右側顯示,但顯示的URL也從http://example.com/sub1/test.me更改爲http://example.com/sub2/foo.html,其中不想要)。

我無法理解爲什麼完整路徑幾乎可以工作,而相對於siteroot的路徑卻沒有。

如果有人可以解釋爲什麼我的方法不起作用,以及做這種重定向的「最佳做法」是什麼 - 我將不勝感激。

回答

1

我解決了它。

不幸的是,當我編寫問題時,我簡化了設置。事實上,在「處女」環境下,原來的.htaccess完全按照我預期的那樣工作。

但是,我使用這個.htaccess的設置是在Drupal 7中,這是有所不同的,因爲Drupal 7使用「乾淨的URL」。

我發現,重寫爲「乾淨」的網址不起作用。因此,在.htaccess以下規則不重定向到Drupal的節點#1時工作:

RewriteRule ^(.*)$ /sub2/node/1 

但是,下列情況:

RewriteRule ^(.*)$ /sub2/?q=node/1 

道歉不把所有的,有關在咔吧題。
我希望這個答案可以幫助那些與同一事物鬥爭的人。