PHP Temel URL Rewrite Sorunu (mod_rewrite)

2 Cevap php

Benim. Htaccess, ben şu var

RewriteEngine On

RewriteRule ^users/?$   users.php
RewriteRule ^users/([a-z]+)/?$   users.php?username=$1

Her şeyin beklendiği gibi çalışır ben yaparsam

http://example.com/users/
http://example.com/users/joeschmoe/

ve PHP için değer olarak "joeschmoe" okuyacak

 $_GET['username']

Ancak, ben yaparsam

http://example.com/users/joeschmoe/?foo

PHP açmıyor

 $_GET['foo']

Herhangi bir fikir bu neden oluyor ve nasıl işe alabilirim? Zaman ayırdığınız için teşekkürler!

2 Cevap

Muhtemelen için "QSA" seçenek arıyorsanız RewriteRule:

'qsappend|QSA' (query string append)
This flag forces the rewrite engine to append a query string part of the substitution string to the existing string, instead of replacing it. Use this when you want to add more data to the query string via a rewrite rule.

Bu sayfa ayrıca şöyle:

Modifying the Query String

By default, the query string is passed through unchanged.
You can, however, create URLs in the substitution string containing a query string part. Simply use a question mark inside the substitution string to indicate that the following text should be re-injected into the query string.
When you want to erase an existing query string, end the substitution string with just a question mark.
To combine new and old query strings, use the [QSA] flag.


In your case, something like this should do :

RewriteEngine On

RewriteRule ^users/?$   users.php
RewriteRule ^users/([a-z]+)/?$   users.php?username=$1 [QSA]

Ekle yönlendirildi url sorgu dizesi eklemek için apache sağlayacak sizin RewriteRule için [QSA] seçeneği:

RewriteRule ^users/?$   users.php [QSA]
RewriteRule ^users/([a-z]+)/?$   users.php?username=$1 [QSA]