2013-08-31 28 views
8

Amacım bu URL:.htaccess URL'si "?" soru işareti ile yeniden yazılır

component/users/?view=registration 

Kime:

registration.html 

.htaccess, web sitesinin mysite dizinindedir.

RewriteBase /mysite 
RewriteRule ^component/users/?view=registration$ registration.html$ [R=301,L] 

Ama ben çalışmıyor ...

Bunu denediğimde:

RewriteRule ^component/users/_view=registration$ registration.html$ [R=301,L] 

çok iyi çalışıyor.

Peki bu sorunu soru işareti ile nasıl düzeltebilirim. Zaten okudum ki bu URL'nin bir parçası değil (eklenmiş). Querystring gibi bir şey kullanmam gerektiğini okudum ama sözdizimini gerçekten anlamadım.

Birisi bu sorunun çözümünü yazabilir mi? Harika olurdu =)

cevap

21

Sorgu dizesi verilerini yakalamak için %{QUERY_STRING} kullanmanız gerekir:

RewriteCond %{QUERY_STRING} ^view=(.*)$ 
RewriteRule ^component/users/?$ %1.html? [R=301,L] 

Yukarıdaki kural/koşul, sorgu dizesi görünümünün değerini alır ve component/users yolu eşleştiğinde yeniden yönlendirmeyi oluşturmak için kullanır.

+1

teşekkürler beni localhost'a yönlendirir ancak işe doesnt bu i elde ediyoruz. http: //localhost/mysite/registration.html ? view = kaydı i yazarken: http: // localhost/mysite/bileşen/kullanıcılar/view = kayıt bu kaldırılabilir nasıl bir fikrin var mı – Bardock

+1

Müthiş? "view = kaydı?"?! Teşekkürler kardeşim şimdi çalışıyor: D – Bardock

-3
RewriteRule ^component/users/\?view=registration$ registration.html$ [R=301,L] 

Gerekir \ çünkü? düzenli bir ifadenin parçasıdır. Bir dize olarak kullanmak için bir \

ile kaçmak gerekiyor Linktip: http://ole.michelsen.dk/tools/regex.html

+4

çalışmıyor. ? Hala/mysite/bileşen/kullanıcılar/view = kaydı :(cevap için – Bardock

İlgili konular