2012-05-22 20 views
6

Özgün olarak sorgu dizeleri kullanılarak oluşturulmuş bir site için uygun 301 yönlendirmeleri oluşturmaya çalışıyorum. Eski URL yapısı aşağıdaki gibidir:Sorgu dizelerini 301 yönlendirmesinden kaldırın

http://www.oldsite.com/about/index.cfm?fuseaction=cor_av&artID=5049 

Ben yeni alan yeni bir sayfaya ('hakkında' olarak adlandırılır) alt klasörün tamamını yönlendirmek istiyorum.

http://www.newsite.com/info 

Yani, şöyle bir yönlendirme ayarlayabilirsiniz: Yeni etki alanının URL'si şöyle

redirectMatch 301 ^/about/ http://www.newsite.com/info 

O sadece iyi yönlendiren, ama o kadar, ekli orijinal URL dizesini tutuyor yeni URL bir tarayıcı bu görünümü kazanıyor:

http://www.newsite.com/info/?fuseaction=cor_av&artID=5049 

kesinlikle bu düzeltmek için nasıl ot bir Apache/301 uzman yeterli değilim. Sadece her şeyden kurtulmak istiyorum? üzerinde.

Gerçekten herhangi bir yardım için teşekkür ederiz.

cevap

28

iki seçenek:

redirectMatch 301 ^/about/ http://www.newsite.com/info? 

ya: sonunda

RewriteEngine on 
RewriteRule ^about/(.*) http://www.newsite.com/info? [L,R=301] 

soru işareti kritik bit gibi görünüyor. İkincisi biraz daha temiz oldsite.com için belirtilen .htaccess bu kodu eklemek için

+0

Teşekkürler! Bu benim için çalıştı. – Ash

+3

Apache> = 2.4'de, QSD işaretini son soru işareti eklemek yerine kullanabilirsiniz: 'RewriteRule^about /(.*) http://www.newsite.com/info [' QSD', L , R = 301] ' –

0

deneyin (ilk URL'nin sonunda bir soru işareti bırakır) görünür:

RewriteCond %{REQUEST_URI} ^/about/index.cfm$ 
RewriteRule ^(.+) http://www.newsite.com/info/ [R=301,QSA] 

Takip?

+1

Hayır,' QSA' ** a ** eski sorgu dizesini yeni url'ye gönderir. ** d ** iscard için, bayrak 'QSD' (apache> = 2.4) kullanın ya da kabul edilen cevapta olduğu gibi bir '?' Ekleyin. [Apache RewriteRule Flags] 'a bakın (http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa) – dennis