Мне было поручено изменить существующий сайт Wordpress с перезаписью URL. Проблема в том, что я никогда раньше этого не делал. Я знаю, что эти правила должны быть .htaccess
файл в корне с чем-то вроде этого:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Однако я понятия не имею, как мне указать правила и условия перезаписи. Я пытался прочитать руководство по mod_rewrite, но мои нехватки технических способностей ограничивают мое понимание.
Вот URL-адреса, которые нужно переписать, и желаемые результаты:
Общий URL сообщения в блоге
www.example.com/?p=X
= www.example.com/blog/custom-post-title/
Конкретные страницы
www.example.com/?page_id=2
= www.example.com/about/
www.example.com/?page_id=4
= www.example.com/bloggers/
www.example.com/?page_id=10
= www.example.com/results/
Общий профиль блоггера
www.example.com/?author=X
= www.example.com/blogger/author-name/
Любая помощь в этом будет принята с благодарностью. Заранее спасибо!
Вы думаете наоборот: вы переписываете входной URL в соответствии с вашей файловой системой.
Итак, вы хотите переписать www.example.com/blog/custom-post-title/
к www.example.com/?p=X
Для всех ваших страниц переходите от конкретных к общим.
#Specifics
RewriteRule ^results/$ /?page_id=10 [L]
RewriteRule ^bloggers/$ /?page_id=4 [L]
RewriteRule ^about/$ /?page_id=2 [L]
#Blogger names
RewriteRule ^bloggers/(.+)$ /?author=$1 [L] #is there really no s to blogger here??
#Other articles
RewriteRule ^(.+)$ /?$1 [L]
Я немного сомневаюсь в последнем правиле, так как вы не используете имя файла для перенаправления (переписать на /), он может сделать новый запрос к index.php?<thequerystring>
поэтому нам пришлось бы исключить index.php из последней перезаписи, чтобы избежать бесконечных циклов:
RewriteRule ^index.php$ - [L]
Может быть добавлен перед всеми остальными.
Wordpress должен иметь возможность сделать это за вас в разделе постоянных ссылок в настройках.
В противном случае, если он не может писать напрямую в ваш файл .htaccess, он должен дать вам что-то для копирования и вставки.
Единственная проблема, которую я вижу, - это использование слова «блоггер» вместо автора. Возможно, вам придется исправить это, если вы считаете это достаточно важным.