.htaccess перенаправляет последнюю часть URL-адреса на то же значение строк запроса URL?

#wordpress #apache #.htaccess #redirect

#wordpress #apache #.htaccess #перенаправление

Вопрос:

На моем wordpress сайте мне нужно сделать перенаправление ниже.

http://www.mydomain.com/magazine-landing/lon-mayf/ для http://www.mydomain.com/magazine-landing/?code=lon-mayf

Здесь lon-mayf может быть что угодно.

Я пробовал приведенный ниже код в .htaccess файле после # END WordPress , но это не работает.

 RewriteEngine On
RewriteRule ^magazine-landing/*$ www.mydomain.com/magazine-landing/?magcode=$1 [R=301,L]
  

Как я мог бы сделать это перенаправление?

Спасибо.

Ответ №1:

RewriteRule выполняются в порядке их появления. Правило для WordPress соответствует всем запросам, поэтому оно никогда не достигнет вашего правила. Кроме того, ваше правило на самом деле не выполняет то, что вы описываете, что оно должно делать.

Поместите это правило выше правила WordPress и ниже RewriteEngine on :

 RewriteRule ^magazine-landing/([^/] )/?$ /magazine-landing/?code=$1 [QSA,R,L]
  

Замените R флаг на R=301 после завершения тестирования, чтобы сделать его постоянным. Тестирование с постоянными перенаправлениями может иметь неожиданные результаты из-за кэширования.

Комментарии:

1. Спасибо, но lon-mayf это динамический текст. это может быть что угодно. Итак, вау, могу ли я это сделать тогда?

2. С помощью группы захвата. [^/] соответствует любому символу, кроме / символа. $1 заменяется первой группой захвата.

3. Это работа. «Замените флаг R на R = 301 после того, как вы закончите ..» Не ясно это. когда я должен это сделать? есть ли проблема только с R?

4. R это временное перенаправление. Тот факт, что клиент перенаправлен сейчас, не означает, что он перенаправит в то же место в следующий раз или перенаправит вообще. Постоянное перенаправление (иногда) кэшируется по соображениям производительности. Он также сообщает клиенту использовать новый URL-адрес в будущем. Я считаю, что это имеет значение для поисковых систем, таких как Google.