2009-08-28 54 views
0

我正在嘗試將來自example.com的所有請求重定向到一個子目錄。下面的代碼完成了這一點,但我不能使子目錄不可見。 (該子目錄包含有自己的/ htaccess檔案Drupal的實例可以是這樣的問題?)如何將來自域的請求不可見地重定向到子目錄?

RewriteCond %{HTTP_HOST} ^example.com$ [NC] 

    RewriteRule ^(.*)$ http://example.com/drupal/d6/$1 [L] 

這結束了在瀏覽器看起來像這樣:

http://example.com/drupal/d6/install.php?profile=default

編輯:我按照建議嘗試從RewriteRule中刪除http://example.com,但重定向仍然不可見。 :-(

回答

0

你需要重寫到的位置,而不是一個完整的http:// URL。如果你這樣做了一個URL,那麼即使在RewriteRul e上沒有[R]標誌也會發出重定向。 /drupal/d6/$1它應該保持一個重寫(而不是 「升級」 到重定向)

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

Prefix Substitution with http://thishost[:thisport]/ (which makes the new URL a URI) to force a external redirection. 
+0

如果您執行[R]或者如果您有ht_tp:// start,它只會發出重定向。 – 2009-08-28 18:01:50

+0

當我這樣做時,我得到一個「服務器錯誤」。並且在錯誤日誌中我看到:[Fri Aug 28 14:04:51 2009] [error] [client 127.0.0.1]由於可能的配置錯誤,請求超過了10個內部重定向的限制。如果需要,使用'LimitInternalRecursion'來增加限制。使用'LogLevel debug'來獲得回溯。 – picardo 2009-08-28 18:05:40

+0

好的,我修復了由於拼寫錯誤導致的服務器錯誤,但仍然無法使URL不可見。 – picardo 2009-08-28 18:16:29

0

絕對URL將導致重定向只使用一個路徑:。

RewriteCond %{HTTP_HOST} ^example.com$ [NC] 
RewriteCond $0 !^drupal/d6/ 
RewriteRule .* drupal/d6/$0 [L] 
+0

我試過了,但url仍然看起來像http://example.com/drupal/d6/install.php?profile=default。你知道我怎樣才能讓drupal/d6無形? – picardo 2009-08-31 16:02:36

+0

@picardo:所以你還想要一個規則,如果請求從URL中刪除'/ drupal/d6'? – Gumbo 2009-08-31 16:28:36

+0

@gumbo是的,確切地說。 – picardo 2009-09-03 22:09:27

相關問題