2015-07-11 3 views
1

Я хочу, чтобы перенаправить/RewriteRule URL-адрес, когда существует специальный параметр в нем например /пост/путь /? Код = 1 перенаправлять /пост/путь/URL Rewrite, если параметр GET

Я не знаю, но это здесь не работают

RewriteEngine on 
RewriteBase/
RewriteRule ^.*code=1.*$ /post/path/ [L] 

если я бегу http://domain.com/post/path/?code=4/oWTYGaoOsyts будет ничего изменить.

[REQUEST_URI] => /post/path/?code=1/oWTYGaoOsyts 
[SCRIPT_NAME] => /index.php 
[PHP_SELF] => /index.php 

ответ

2

Для поиска параметра в URL-адресе вам необходимо использовать RewriteCond и% {QUERY_STRING}:

RewriteCond %{QUERY_STRING} ^.*code=1.*$ 
RewriteRule .* /post/path/ [L] 

Из documentation:

Синтаксис: RewriteRule шаблон подстановки [флаги]

В директории и контекст Htaccess, Узор первоначально будет сопоставлено с пути файловой системы , после удаления префикса, который привел сервер к текущему RewriteRule (например, «app1/index.html» или «index.html» в зависимости от , где определены директивы).

Если вы хотите, чтобы соответствовать против имени хоста, порт, или строки запроса, используйте в RewriteCond с% {HTTP_HOST}, {%} SERVER_PORT или % {QUERY_STRING} переменных соответственно.

0

Потому что вы ищете code=1 и проходите code=4

Это должно работать с данным входом

RewriteRule ^.*code=4.*$ /post/path/ [L]

Следует заметить, что он может соответствовать непредвиденным URLs как code=40 или somecode=4

+0

просто пример, это было правильно – dazzafact

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