Перенаправление с HTACCESS, включая параметры GET - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть определенный .htaccess, определенный как есть, для перенаправления всего трафика из корневой папки на идентичный URL в подпапке с исключениями на поддоменах.

Вот мой файл:

#RewriteEngine on 
#RewriteRule ^(.*)$ http://www.mydomain.fr/blog/$1 [R=301,QSA]
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{HTTP_HOST} !^joe\.mydomain\.fr$ [NC]
RewriteCond %{HTTP_HOST} !^lab\.mydomain\.fr$ [NC]
RewriteCond %{REQUEST_URI} !^joe(.*)
RewriteCond %{REQUEST_URI} !^lab(.*)
RedirectMatch ^/$ http://www.mydomain.fr/blog/

</IfModule>

Этот файл делает именно то, что я хочу: когда я вводю что-то вроде www.mydomain.fr/wp-admin, например, он перенаправляет на www.mydomain.fr/blog/wp-admin, но исключает субдомены joe.mydomain.fr и lab.mydomain.fr из перенаправления.

Однако, что происходит, если я перехожу на joe.mydomain.fr?test=1, сервер просто перенаправляет меня на joe.mydomain.fr, но параметр GET исчезает.

Как мне этого избежать?

Iпопытался заменить [NC] на [QSA] или [R=301,QSA], но я получил внутреннюю ошибку сервера.

Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2019

Проведя день, документируя, как на самом деле работают файлы .htaccess, я наконец-то смог решить мою проблему с помощью следующего файла, вдохновленного файлом Абхишека Гурджара:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /s

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{HTTP_HOST} !^joe\.mydomain\.fr$ [NC]
RewriteCond %{HTTP_HOST} !^lab\.mydomain\.fr$ [NC]
RewriteCond %{HTTP_HOST} !^blog\.mydomain\.fr$ [NC]
RewriteCond %{REQUEST_URI} !/joe
RewriteCond %{REQUEST_URI} !/lab
RewriteRule ^(.*)$ http://www.mydomain.fr/blog/$1 [R=301]

</IfModule>

К вашему сведению, 3первые строки обязательны для моего провайдера 1 & 1, по-видимому ...

Я изменил REQUEST_URI из ! ^ joe (. *) и ! ^ lab (. *) до ! / Joe и ! / Lab , а затем исключая URL-адрес blog.mydomain.fr, чтобы избежать проблем с blog.mydomain.fr/joe или blog.mydomain.fr / lab, если когда-нибудь я их использую.

Наконец, мне пришлось перенаправить свои субдомены в моем клиентском интерфейсе 1 & 1 на подпапки моего веб-пространства вместо жесткого URL, что означает:

  • Вместо перенаправления joe.mydomain.fr на http://www.mydomain.fr/joe, я перенаправляю его в / www / joe /

Эта конфигурация теперь позволяет мне вводить URLнапример, joe.mydomain.fr?dnt=1 при получении перенаправления на http://www.mydomain.fr/joe?dnt=1, что я и хотелo do.

Надеюсь, это поможет другим. Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...