2012-12-28 59 views
0

我似乎無法弄清楚如何301重定向舊網址https://www.mydomain.com/old_url/https://www.mydomain.com/new_url/htaccess的301條規則並不重定向

目前,我有我的htaccess以下(注意與此相關的問題,第二條規則):

RewriteEngine On 
# SSL redirect 
RewriteCond %{HTTP:X-Forwarded-SSL} !on 
RewriteRule ^(.*) https://www.mydomain.com$1 [R=301,nc] 

RewriteCond %{THE_REQUEST} ^GET\ /old_url/ 
RewriteRule ^/old_url$ https://www.mydomain.com/new_url [R=301,nc] 

# If the root has a querystring with at least 1 character 
RewriteCond %{QUERY_STRING} ^.+ 
RewriteRule ^/?$ https://www.mydomain.com/new_home_page [R=301,nc] 

我也使用Django,如果這有所作爲。任何幫助是極大的讚賞。

回答

1

取而代之的是:

RewriteCond %{THE_REQUEST} ^GET\ /old_url/ 
RewriteRule ^/old_url$ https://www.mydomain.com/new_url [R=301,nc] 

你可以試試這個:

RewriteCond %{REQUEST_URI} old_url/(.*) 
RewriteRule .* https://www.mydomain.com/new_url/%1 [R=301,QSA,NC] 

將重定向:

https://www.mydomain.com/old_url/whatever

要:

https://www.mydomain.com/new_url/whatever

修訂

如果URI( 「什麼」)是不被複制的其餘部分,使用此:

RewriteCond %{REQUEST_URI} old_url.* 
RewriteRule .* https://www.mydomain.com/new_url [R=301,QSA,NC] 
+0

這似乎是做你會說的話。但是,我不在乎「無論」部分。 –

+0

我使用'RewriteCond%{REQUEST_URI} old_url/ RewriteRule ^/$ https://www.mydomain.com/new_url/ [R = 301,QSA,NC] ' –

+0

好吧,我加入以防萬一,當沒有任何東西時不影響規則。 –

0

下應該只是罰款:

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^old_url$ /new_url [L,R=301] 
RewriteRule ^old_url/(.*) /new_url/$1 [L,R=301] 
+0

那並不也不做任何事。當我訪問舊網址時,我仍然收到404。 –

+0

@AbidA你把'.htaccess'放在你的web服務器的根目錄下了嗎?嘗試使用我的更新(您可能沒有將這些選項設置爲默認值)。 – h2ooooooo

+0

該文件是在正確的地方,因爲其他規則工作得很好。我嘗試了你的更新和相同的404。 –