2012-10-21 20 views
9

Bu soruyu aradım ancak yalnızca belirli gereksinimlerime göre uyarlanması zor görünen belirli yanıtlara rastlarım. Bu şekilde görünecek şekilde.htaccess Rewrite sorgu dizgisini yol olarak yeniden yaz

http://www.example.org/test.php?whatever=something 

bunu yeniden yazmak istiyorum:

ı yeniden yazmak çalışılıyor URL olduğunu varsayalım

http://www.example.org/test/something 

Bunu nasıl yapabilirim? yönlendirmek amacıyla

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?test/(.*?)/?$ /test.php?whatever=$1 [L] 

Ve: rota için içten üzere /test/something gibi bir istek size belge kök htaccess dosyasında bu kuralları kullanmak istiyorsunuz, /test.php?whatever=something adresinde içerik servis alır, böylece yeniden yılında

+2

bazı örnekler: https://wiki.apache.org/httpd/RewriteQueryString –

cevap

19

güzel görünümlü birine sorgu dizesi URL:

İşte
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /test\.php\?whatever=([^\&\ ]+) 
RewriteRule ^/?test\.php$ /test/%1? [L,R=301] 
+0

Kesinlikle mükemmel, teşekkür ederim! – UserIsCorrupt

+0

Yukarıdaki kodu kullanarak birisi sorgu sorgu dizesi içinde sorun varsa o zaman sadece son kuralın sonunda sondaki soru işareti eklemek gerekir, burada güncelleştirilmiş bir kod 'RewriteCond% {THE_REQUEST}^[AZ] {3, 9} \ /test\.php\?whatever = ([^ \ & \] +) RewriteRule^/? Test \ .php $/test /% 1? [L, R = 301] ' –

+0

Aynı kuralları kullanıyorum ama benim URL'm çalışmıyor http://example.com/directory1/directory2/login.php?id=8 ve http: gibi yapmak istiyorum: //example.com/directory1/directory2/login/8 lütfen nasıl düzeltileceğini bana söyleyin –

İlgili konular