2016-02-28 3 views
1

На самом деле я работаю над небольшим скриптом php, и теперь я борюсь с выполнением перенаправления с помощью mod-rewrite. Что я хочу, чтобы перенаправитьОшибка редуцирования мод с сообщением

www.xx.com/motivational/api.php?latest=1 

в

www.xx.com/api.php?latest=1&app=motivational 

Я попытался это, но он не работает:

RewriteRule ^/motivational/api\.php$ /api.php?latest=&%{QUERY_STRING} 

ответ

2

%{QUERY_STRING} представляет собой целую строку запроса, в вашем случае latest=1. Поэтому, когда вы добавляете его в ...?latest= в свою строку подстановки, результат равен ...?latest=latest=1, который не является тем, что вы хотите.

Изменить правило

RewriteRule ^/motivational/api\.php$ /api.php?%{QUERY_STRING}&app=motivational 

и вы должны быть хорошо.

Или вы могли бы сделать:

RewriteRule ^/motivational/api\.php$ /api.php?app=motivational [QSA] 

Флаг QSA означает для добавления новой строки запроса к старому, вместо того, чтобы заменить его, так что ваша переменная latest не будет потеряна.

1

Вы не можете соответствовать против строки запроса в RewriteRule, Вам понадобится RewriteCond для соответствия строкам запроса в URL-адресе:

RewriteEngine on 

RewriteCond %{THE_REQUEST} /([^/]+)/api\.php\?latest=1 [NC] 
RewriteRule^/api.php?latest=1&app=%1 [NC,L,R] 

% 1 является частью регулярного выражения "([^ /] +)" в RewriteCond, он содержит динамически записанный путь в строке запроса.

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