mod_rewrite geçen değişkenler

3 Cevap php

Ben şu mod_rewrite kuralı vardır:

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1

Bu / blabla gibi / search.php için? Action = prosedür & procedureName = blabla şeyler yönlendirerek çalışıyor

Sorun bazen (pagination için) bir 'start' değerini geçmek istiyor. Örneğin, / blabla /? = 20 başlar.

Şu anda, sadece onu yok sayar. $ _REQUEST Dizi yazdırarak 'start' görünmüyor. Ben kural için değiştirerek çalıştı:

RewriteRule ^([^/.]+)/\?start=([0-9]+)$ search.php?action=procedure&procedureName=$1&start=$2
RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1

Ama hiçbir şey yapmadım.

Herhangi bir fikir?

Teşekkürler

3 Cevap

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 [L,NC,QSA]

QSA sorgu dizesi append anlamına gelir, ve $ _GET append olacak geçmek vars. Aksi takdirde, normalde eklenmez.

Aslında ben cevabımı buldum:

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 [QSA]

The QSA allows it to pass query strings. Right?

RewriteRule yolu için de geçerlidir. Sen sorgu dizesini eşleştirmek için RewriteCond kullanmanız gerekir.

http://httpd.apache.org/docs/2.2/mod/mod%5Frewrite.html#rewriterule

Ya da sadece, kullanımı% {QUERY_STRING} aracılığıyla sorgu dizesi geçmek

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1&%{QUERY_STRING}