2013-01-16 144 views
1

由於某種原因,我真的無法讓我的.htaccess RewriteRule工作。我嘗試了很多東西,並做了我的谷歌搜索,但失敗了。一個可能的原因可能是我有一個非常古老的Apache版本(但這是我無法控制的)。不知道如何檢索版本,但phpinfo()顯示我「Apache API版本20051115」。至少它必須在臺式機,黑莓和iPad上運行。Apache htaccess重寫規則不起作用

我想改寫這個:http://subdomain.domain.com/folder1/?id=1234 以下幾點:http://othersubdomain.domain.com/?id=1234 其中id可以是任意數字(我很好重寫任何參數,我還罰款與重定向到/文件夾1/ID = 1234,?重要的部分是子域和參數仍然存在的事實)。重要的是,我沒有得到身份驗證彈出窗口(在任何設備上)。

我試過如下:

AuthUserFile /home/user/path/to/.htpasswd 
AuthGroupFile /dev/null 
AuthName "This site requires a valid username and password" 
AuthType Basic 

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ^folder1.*$ http://othersubdomain.domain.com%{REQUEST_URI}? [redirect=301,last] 

<limit GET POST> 
require valid-user 
</limit> 

,似乎現在得到了正確的重定向我的機器上的唯一事情是subdomain.domain.com/folder1/(沒有最後/它不工作,或者如果我添加參數到最後,即.../folder1 /?id = 1234它也不起作用)。

我還嘗試了以下內容:

AuthUserFile /home/user/path/to/.htpasswd 
AuthGroupFile /dev/null 
AuthName "This site requires a valid username and password" 
AuthType Basic 

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_URI} ^/folder1 
RewriteRule .* http://othersubdomain.domain.com/?%{QUERY_STRING} [redirect=301,last] 

<limit GET POST> 
require valid-user 
</limit> 

此重定向似乎工作,但只有在我給出正確的驗證用戶名/密碼,而這正是我想避免的。

技巧非常歡迎更多...

回答

1

我認爲這應該工作(沒有任何的RewriteCond):

RewriteRule ^folder1(.*)$ http://othersubdomain.domain.com$1 [L,QSA,R=301] 

QSA標誌告訴保留查詢參數。 $(1)被替換爲()所匹配的內容。

P.S.據我所知,只能在RewriteCond中使用%{...}變量。

+0

感謝您的回覆。如果我提供了正確的身份驗證,這確實有效,但我希望它在沒有獲得身份驗證彈出對話框的情況下運行。 – jeebee

+0

嘗試將Auth *指令包裝爲。這可以幫助您關閉特定網址的身份驗證。 –

+0

再次感謝,但我沒有做到這一點。儘管聽起來它應該能夠解決這個問題。 但是,我發現了別的東西,我非常滿意。我完全刪除了頂層.htaccess。我的頂層是一個有自己的身份驗證(我只是啓用了一些身份驗證插件)的Wordpress網站。我將.htaccess文件移到了我想要的子文件夾中。 – jeebee