2010-09-02 91 views
0

我正在將一個子域重新寫入一個'文件夾' - 實際上是wordpress中的一個頁面,並且這一切似乎都正常工作。我不希望URL欄中的地址改變。 foo.example:除非用戶並沒有把尾部斜槓的頁面名稱後,頁面仍然重定向到正確的URL,但在地址欄中的URL改變在子域重寫後強制一個URL後面的斜槓

例如

,一切工作正常。 COM /條 變爲:public.example.com/foo/bar

其中:foo.example.com/bar/停留在地址欄中正確的網址,表示的是重定向的頁面(這是正確的)

如果沒有發送,我需要添加什麼規則才能添加尾部斜線?

代碼中,我至今是:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

Options +FollowSymlinks 

RewriteCond %{HTTP_HOST} ^foo\.example\.com$ [NC] 
RewriteRule ^(.*)$ http://public.example.com/foo/$1 [P] 

# rules for WordPress ... 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

##### 

</IfModule> 

任何幫助將是非常美妙的,我是很新,htaccess的。謝謝!

+0

'RewriteRule ^(。*)$ http://public.example.com/foo/$1 [L]'應該總是會引起外部重定向,但是你說如果你在URL中包含一個尾部的斜線,它不? – 2010-09-02 14:25:28

+0

你好!啊,我粘貼了錯誤的代碼。它的意思是[P]而不是[L] - 正確的頁面沒有斜線顯示,但它在地址欄中重定向。隨着斜線一切都是完美的! – 2010-09-02 16:03:55

回答

0

唷,一點玩耍後,我似乎已經得到它的工作:

RewriteCond %{HTTP_HOST} ^foo\.example\.com$ [NC] 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://foo.example.com/$1/ [L,R=301] 

RewriteCond %{HTTP_HOST} ^foo\.example\.com$ [NC] 
RewriteRule ^(.*)$ http://public.example.com/foo/$1 [P] 

基本上,第一塊增加了在URL後面加斜槓不是首先出現的地方,然後第二個塊爲URL做代理重定向。

據我所見,這可以捕獲所有情況,但是讓我知道是否有任何漏洞!

0

這個規則應該這樣做:

RewriteRule .*[^/]$ %{REQUEST_URI}/ 

將這個規則在你的其他規則前面。您可能還需要添加一個條件,以排除存在的文件:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .*[^/]$ %{REQUEST_URI}/ 
+0

非常感謝Gumbo,不幸的是我得到了一條500線的服務器錯誤。嘗試它在幾個地方,並沒有喜悅:(。謝謝你的幫助,雖然! – 2010-09-03 08:06:30

+0

@安迪智能:和錯誤日誌文件說什麼? – Gumbo 2010-09-03 08:12:00

+0

錯誤日誌說:請求超過了10個內部重定向的限制,由於可能的配置錯誤。 – 2010-09-03 08:15:02

相關問題