Перенаправление динамических URL с несколькими идентификаторами с использованием .htaccess (Wordpress) - PullRequest
0 голосов
/ 29 июня 2019

Я только что переместил свой сайт на Wordpress, что означает, что структура URL теперь изменилась.Я хотел бы использовать правило перезаписи в файле .htaccess для перенаправления динамических URL-адресов с несколькими идентификаторами в одном операторе, но безуспешно.Пример:

СТАРЫЙ URL: example.co.uk/seasons/season.php?ID=1819

NEW URL: example.co.uk/seasons/1819

Утверждения, которые я пробовал в .htaccess:

RedirectMatch 301 ^/seasons/season.php?ID=(.*).htm$ example.co.uk/seasons/$1

и

RewriteCond %{QUERY_STRING} ^?ID=1$
RewriteRule ^/seasons/season.php$ example.co.uk/seasons/? [R=301,L]

Ни в одном из случаев не происходит перенаправление.Есть ли что-то в файле Wordpress .htaccess, который я не рассматриваю, или это ошибка с утверждениями, которые я пытаюсь сделать.Я использую перенаправления .htaccess 301 для http на https и без www на www без проблем.

1 Ответ

0 голосов
/ 29 июня 2019

Это фиксированная версия выбранного вами подхода для внешнего перенаправления:

RewriteEngine on
RewriteCond %{QUERY_STRING} (?:^|&)ID=(\d+)(?:&|$)
RewriteRule ^/?seasons/season\.php$ https://example.co.uk/seasons/$1 [R=301,QSD]

Поскольку и старый, и новый URL-адреса используют одно и то же имя хоста, вы можете упростить это:

RewriteEngine on
RewriteCond %{QUERY_STRING} (?:^|&)ID=(\d+)(?:&|$)
RewriteRule ^/?seasons/season\.php$ /seasons/$1 [R=301,QSD]

Хорошей идеей будет начать с временного перенаправления 302 и изменить его только на постоянное перенаправление 301 позже, если вы уверены, что все настроено правильно. Это предотвращает проблемы с кэшированием при попытке ...

Эти правила также будут работать в конфигурации хоста http-серверов или внутри файла динамической конфигурации (файл ".htaccess"). Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера и включен на хосте http. Если вы используете динамический файл конфигурации, вам нужно позаботиться о том, чтобы его интерпретация вообще была включена в конфигурации хоста и чтобы он находился в папке DOCUMENT_ROOT хоста.

И общее замечание: вам всегда следует размещать такие правила в конфигурации хоста http-серверов, а не использовать файлы динамической конфигурации (".htaccess"). Эти динамические конфигурационные файлы добавляют сложность, часто являются причиной неожиданного поведения, их трудно отладить, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

...