.htaccess перезаписывает файл с дополнительной строкой запроса

#.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