2012-10-13 18 views
25

URL'yi başka bir sayfaya mod_dosyalamak istiyorum, ancak sonra da herhangi bir sorgu dizesinin korunmasını istiyorum.Sorgu dizelerini nasıl düzenleyebilir ve saklayabilirim?

RewriteEngine On 

#enforce trailing slashes 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !# 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://localhost/siteroot/$1/ [L,R=301] 

RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1 

Yani bir kullanıcının ziyaret ettiği apps/app1/, index.php?app=app1 gösteriliyorsa. Ancak, isteğe bağlı sorgu dizelerini korumak istiyorum, böylece ziyaret apps/app1/?variable=xindex.php?app=app1&variable=x döndürür.

Bu mod_rewrite kural/koşul ne olur?

cevap

49

Sen bunun gibi iç yeniden yazar aksine [R] bayrağıyla sayfa 301 için

RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1 [L,QSA] 

yönlendirmeleri ("sorgu dizesi append") [QSA] flag eklemem gerekiyor, sorgu dizesi otomatik olarak eklenir. Ancak, iç yeniden yazma için [QSA] ile zorlamanız gerekir.

+0

Teşekkürler, bunun o kadar basit olduğunu anlayamadım. –

+1

+1 @DanielOakey ile katılıyorum .. Regex ile bir şeyler hacklemek için çalışıyordum ve o değildi .. –

+2

Netleştirmek için, bu yeniden yönlendirmeler vs yönlendirmeler ile ilgili değil. http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa diyor ki: Yeni URI bir sorgu dizesi içeriyorsa, RewriteRule varsayılan davranışı varolan sorgu dizesini atmak ve değiştirmek yeni oluşturulan ile. [QSA] bayrağını kullanmak, sorgu dizelerinin birleştirilmesine neden olur. –

İlgili konular