2013-10-24 2 views
2

У меня возникла проблема с созданием моего переписывания URL. На моем локальном сервере, работая с nginx, все идет хорошо. Но как только я попытаюсь заставить его работать на apache с htacces, я как бы схожу с ума.Проблема с перезаписи URL-адреса и параметром GET

Мои URLs ищут так:

http://example.com/controller/action/param1/value1/param2/value2

Ниже приводится htaccess работает в предыдущем случае:

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine on 
    RewriteBase/
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
    RewriteCond %{REQUEST_URI} !^/(images|css|js)/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^(.*)$ index.php?$1 [L] 
</IfModule> 

Но в некоторых случаях у меня есть некоторый дополнительный параметр , например, для проверки подлинности Facebook:

http://example.com/controller/action?hauth.start=Facebook&hauth.time=1382665465

Этот случай не работает с предыдущим htaccess. В переменных GET ничего не происходит. Как я могу это исправить?

ответ

2

Использование QSA (Строка запроса Append) флаг в правиле

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine on 
    RewriteBase/
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
    RewriteCond %{REQUEST_URI} !^/(images|css|js)/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^(.*)$ index.php?$1 [L,QSA] 
</IfModule> 

QSA флаг удостоверяется, чтобы сохранить существующую строку запроса, добавляя новые параметры запроса.

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