#.htaccess
#.htaccess
Вопрос:
Я изменил путь к некоторым своим URL-адресам, и я хотел бы перенаправить их на некоторые новые URL-адреса с дополнительной строкой запроса ?industry=
Old url: e.g. https://domain.ext/skills/keywords/list.php?q=account manager
https://domain.ext/skills/keywords/list.php?q=assistant
New url: e.g.
https://domain.ext/skills/keywords/list.php?industry=human-resourcesamp;q=account manager
https://domain.ext/skills/keywords/list.php?industry=bankingamp;q=account manager
https://domain.ext/skills/keywords/list.php?industry=bankingamp;q=assistant
Как вы можете видеть, новые URL-адреса содержат новый параметр запроса industry=
, который может иметь разные отрасли.
Итак, как я могу проверить, существует ли новый URL-адрес с запросом, ?q=account manager
например, а затем перенаправить старый URL-адрес на один из новых URL-адресов, которые совпадают amp;q=account manager
?
Я просмотрел RewriteRule
с .htaccess
помощью, но пока не смог найти правильное перенаправление. Если бы кто-нибудь мог поделиться некоторыми мыслями. Спасибо.
Комментарии:
1. Извините, но неясно, что вы на самом деле спрашиваете. Как автоматический процесс должен узнать, какие новые и старые URL-адреса связаны друг с другом?
Ответ №1:
Не уверен, что вы хотите сделать, но я приму этот вопрос как запрос на простой пример правила перезаписи. В зависимости от того, чего вы пытаетесь достичь, может быть использовано несколько подходов.
Код в файле .htaccess может быть таким:
# essential
Options FollowSymLinks
RewriteEngine On
# Here a simple rule, the link ending with assitant will be sent to list.php as the q parameter
RewriteRule ^skills/keywords/assistant$ list.php?q=assistant
# You may use variables and Regex, such as $1, $2, $3 in this case to receive the values
# in the parentheses for the three parameters
RewriteRule ^(en/fr/es)/(keywords)/([/.w_-]{3,})$ list.php?lang=$1amp;section=$2amp;q=$3 [L,R=301,NC]
Флаги — это такие:
- NC = Нет регистра
- R=301 = возвращает код 301 (постоянное перенаправление), а не 302 (временное) для целей SEO
- L = Последнее выполняемое действие, последующие игнорируются.
Я не проверял, работает ли этот код, при тестировании этого на вашем сервере вы столкнетесь с пустой страницей, если что-то не так. Кроме того, если вы используете флаги, убедитесь, что после запятой нет пробелов.
На этой странице все это очень хорошо объясняется: https://httpd.apache.org/docs/trunk/en/rewrite/intro.html