Вопрос или проблема
Я пытаюсь переписать этот 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, сохраняя при этом правильные параметры запроса.
Пошаговое руководство
-
Убедитесь, что модуль mod_rewrite включен. Убедитесь, что модуль mod_rewrite активен на вашем сервере Apache. Это можно сделать, добавив строку
RewriteEngine On
, если ее еще нет. -
Добавьте правила переписывания
Вставьте следующее правило в ваш файл .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, чтобы убедиться, что они корректно перенаправляют пользователей. Если возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью!