2009-11-11 3 views
2

В моей .htaccess, я следующийБазовый URL Rewrite Проблема в PHP (mod_rewrite)

RewriteEngine On 

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

Все работает как задумано, если я

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

и PHP будет читать "joeschmoe", как значение для

$_GET['username'] 

Однако, если я делаю

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

PHP не подберут

$_GET['foo'] 

Любая идея, почему это происходит и как я могу заставить его работать? Спасибо за ваше время!

ответ

4

Вы, вероятно, ищете вариант "QSA" в RewriteRule:

'qsappend|QSA' (добавление строки запроса)
Этот флаг заставляет перезаписать двигатель для добавления строки запроса строки подстановки до существующей строки вместо замены . Используйте это, когда вы хотите добавить дополнительные данные в строку запроса с помощью правила rewrite .

Эта страница также заявляет:

Изменение строки запроса

По умолчанию, строка запроса передается через без изменений.
Вы можете, , однако, создать URL-адреса в строке подстановки , содержащей запрос строки . Просто используйте вопрос . Марк внутри строки подстановки до указывает, что следующий текст следует вставить в запрос .
Если вы хотите удалить существующую строку запроса , завершите строку замещения только вопросительным знаком .
Чтобы комбинировать новые и старые строки запросов, используйте флаг [QSA] .


В вашем случае, что-то вроде этого нужно сделать:

RewriteEngine On 

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

спасибо, ваше решение работало – axsuul

6

Добавить [QSA] вариант к вашему RewriteRule, который позволит апача для добавления строки запроса к перенаправлены URL:

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

спасибо, работал отлично – axsuul