.htaccess: перенаправление корня подпапки только для конкретного запроса и сохранение параметра - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь реализовать условное перенаправление.Все запросы example.com/app/?s={some string} (и ничего больше) должны быть перенаправлены на example.com/?s={some string}.

Я пробовал много вещей и искал StackOverflow.Мой окончательный проект был таким:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^\/app\/\?s=
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /?  [R=301]

Но это не сработало: - / Есть идеи?

ОБНОВЛЕНИЕ:

Мой подход сейчасis

RewriteCond %{REQUEST_URI} ^\/app\/
RewriteCond %{QUERY_STRING} ^s=(.*)
RewriteRule (.*) /  [R=301,L]

Все еще не работает: D

ОБНОВЛЕНИЕ 2:

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Все запросы example.com/app/s={some string} должны быть перенаправлены на example.com/s={some string}

У вас нет ? в URL-адресах вашего примера, следовательно, строка запроса ,s= - это просто часть URL-пути (это не строго параметр URL).(Это, однако, противоречит вашему примеру кода, где вы пытаетесь сопоставить ? и строку запроса? Именно это я и пытался уточнить в комментариях.)

Если s={some string} действительно частьURL-пути, затем попробуйте следующее:

RewriteEngine On

RewriteRule ^app/(s=.*) /$1 [R=302,L]

ОБНОВЛЕНИЕ: Я забыл ? в примере выше

В этом случае ваше первое «обновление» должно сработать (в зависимости от того, куда вы поместили директивы).Однако было бы лучше написать это так:

RewriteCond %{QUERY_STRING} ^s=
RewriteRule ^app/$ / [R=302,L]

Более эффективно проверять URL-путь в шаблоне RewriteRule , поскольку он обрабатывается первым.Строка запроса передается по умолчанию (нет необходимости capture {some string}).

Тест с 302 (временными) перенаправлениями, чтобы избежать проблем с кэшированием.Измените на 301 (постоянный) - если это является намерением - только после того, как вы подтвердите, что он работает нормально.

Перед тестированием вам необходимо очистить кэш браузера.

0 голосов
/ 20 февраля 2019

Документация сообщает нам:

Изменение строки запроса

По умолчанию строка запроса проходит без изменений

Однако вы явно устанавливаете его как пустое.

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