RewriteRule в .htaccess для включения типа записи и таксономии

Вопрос или проблема

Я пытаюсь переписать этот URL www.domain.com/gallery/?university=birmingham в более удобный для SEO, например www.domain.com/uni/birmingham/gallery

(?university=birmingham) представляет таксономию, а gallery – тип поста. В данный момент этот URL (www.domain.com/gallery/?university=birmingham) работает нормально, он отображает правильные посты, просто мне не удалось переписать его на указанный выше.

Я пытался сделать это (что должно сработать):

RewriteEngine On
RewriteRule ^uni/([0-9A-Za-z_-]+)/(.+)$ /$2?university=$1 [QSA,NC,L,R=302]


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /students/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /students/index.php [L]


</IfModule>

Может ли кто-нибудь указать мне правильное направление или показать, что я делаю не так?

Это правило переписывания определенно сработает. Добавьте этот код в ваш файл .htaccess.
RewriteEngine On
RewriteRule ^uni/([^/]*)$ /gallery/?university=$1 [L]

Ответ или решение

Для того чтобы создать приятные для SEO переадресации, идущие от URL-адреса вида www.domain.com/gallery/?university=birmingham к более читабельному формату www.domain.com/uni/birmingham/gallery, вам необходимо внести изменения в файл .htaccess вашего веб-сервера.

Общая структура .htaccess

Файл .htaccess — это конфигурационный файл, который позволяет вам управлять настройками веб-сервера Apache на уровне каталога. Ваша задача — добавить правила переписывания (RewriteRule) для достижения желаемого формата URL, сохраняя при этом правильные параметры запроса.

Пошаговое руководство

  1. Убедитесь, что модуль mod_rewrite включен. Убедитесь, что модуль mod_rewrite активен на вашем сервере Apache. Это можно сделать, добавив строку RewriteEngine On, если ее еще нет.

  2. Добавьте правила переписывания

Вставьте следующее правило в ваш файл .htaccess. Обратите внимание, что важно правильно определить порядок правил, так как порядок обработки влияет на результат:

# Включаем механизм переписывания
RewriteEngine On

# Правило для переписывания URL
RewriteRule ^uni/([^/]+)/gallery/?$ /gallery/?university=$1 [QSA,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Объяснение правила

  • RewriteRule ^uni/([^/]+)/gallery/?$: Это выражение ищет любые URL, которые начинаются с uni/, за которым следует строка, не содержащая символа /, и заканчивается на gallery. Символ ? после gallery означает, что он может быть опциональным (то есть допускается как gallery, так и gallery/).

  • /gallery/?university=$1: При совпадении данное правило перенаправляет запрос на /gallery/, добавляя параметр запроса university, который будет равен значению, захваченному в первой части регулярного выражения ([^/]+).

  • [QSA,L]: Флаги здесь обозначают:

    • QSA (Query String Append) — это значит, что если в начальном запросе есть другие параметры, они будут добавлены к конечному URL.
    • L (Last) — указывает, что это последнее правило, которое должно применяться, если текущее правило совпало.

Заключение

Добавив это правило в ваш файл .htaccess, вы создадите нужный формат URL для вашего сайта, улучшая при этом SEO. Таким образом, ссылки станут более удобочитаемыми для пользователей и поисковых систем, что непосредственно влияет на индексируемость вашего контента. Не забудьте протестировать новые URL, чтобы убедиться, что они корректно перенаправляют пользователей. Если возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью!

Оцените материал
Добавить комментарий

Капча загружается...