2009-05-21 4 views
0

Я хочу, чтобы мой сайт URLs выглядеть.htaccess mod_rewrite, играя с переменными

http://example.com/place/info?var=info&morevars=ifneeded 

Место и информация также являются переменными, но они имеют фиксированное имя, те, после будет меняться. EDIT Это URL я пытаюсь переписать

http://example.com/test.php?place=test&action=info&var=info&morevars=ifneeded 

Это то, что я до сих пор

RewriteEngine on 

RewriteRule ^([A-Za-z0-9-]+)/?$ test.php?place=$1 [NC] 
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ test.php?place=$1&action=$2 [NC] 

Я думаю, что есть способ сделать это с {QUERY_STRING}, но я не могу заставить его работать всего 500 ошибок или не делать различий.

ответ

1

Вы установили QSA flag, автоматически присоединяет первоначальный требуемый запрос на новый:

RewriteEngine on 
RewriteRule ^([A-Za-z0-9-]+)/?$ test.php?place=$1 [NC,QSA] 
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ test.php?place=$1&action=$2 [NC,QSA] 
+0

Спасибо, никогда бы не нашел, что во всех документах apache без вас! – Scott

0

Вы пропустили первый/

RewriteEngine on 

RewriteRule ^/([A-Za-z0-9-]+)/ test2.php?place=$1 [NC] 
RewriteRule ^/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/ test2.php?place=$1&action=$2 [NC] 
+0

Это не получает первые переменные место и информация вообще, URL-адрес его переписывания: http://example.com/test2.php?place=test&action=info&var=info&morevars=ifneeded – Scott

+0

Ведущая косая черта необходима только в том случае, если вы хотите использовать правило на сервере или конфигурации виртуального хоста. В .htaccess контекстный префикс для каждого каталога удаляется перед тестированием правил. – Gumbo

Смежные вопросы