Переадресация .htaccess с параметрами $ 1 и $ 2 для формирования URL - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь выполнить следующее правило в моем .htaccess. У меня есть этот .htaccess в корневом каталоге domain1.com и я хочу организовать следующее перенаправление domain1.com/index.php?domain2.com?page.html, которое приведет всех посетителей на domain2.com/page.html.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^
RewriteRule (.+)\.php\?(.+)\?(.+) http://$2/$3 [R=301,L]

решаемая. domain1.com/domain2.com/page.html

RewriteEngine On
RewriteCond %{HTTP_HOST} ^
RewriteRule (.+)\/(.+) http://$1/$2 [R=301,L]

1 Ответ

0 голосов
/ 23 января 2019

Вместо создания ваших начальных URL-адресов, таких как domain1.com/index.php?domain2.com?page.html - что требует, чтобы вы захватили две отдельные обратные ссылки (вторая ? будет закодирована в URL). Было бы лучше отформатировать ваш URL более условно, как показано ниже:

domain1.com.com/index.php?redirect=domain2.com/page.html

(Не уверен, почему вы подставили ? для первой косой черты в передаваемом URL?)

Тогда вы могли бы сделать что-то вроде следующего. Обратите внимание, что вам нужно использовать условие, которое проверяет серверную переменную QUERY_STRING.

RewriteCond %{QUERY_STRING} ^redirect=([^&]+)
RewriteRule ^index\.php$ http://%1 [QSD,R,L]

%1 - это обратная ссылка на последний соответствующий CondPattern .

Флаг QSD необходим для удаления исходной строки запроса из запроса.

ОДНАКО вам необходимо выполнить дополнительную проверку доменов, на которые можно перенаправить, иначе это может быть использовано со злым умыслом после его обнаружения.


UPDATE:

RewriteCond %{HTTP_HOST} ^
RewriteRule (.+)\/(.+) http://$1/$2 [R=301,L]

Директива RewriteCond здесь ничего не делает. Если вы хотите проверить наличие заголовка Host (т.е. это не запрос HTTP / 1.0), вам следует изменить регулярное выражение ^ на . (просто точка). Однако, если вы находитесь на общем сервере, этот тест, вероятно, является излишним.

При использовании URl-path это «сломается», если имя хоста назначения совпадает с исходным.

...