В настоящее время я добавил настраиваемую структуру для сообщений premalinks /post/%post_id%
через настройки постоянных ссылок в Admin.
Поскольку мне нужно переписать постоянные ссылки для категорий, тегов и страниц авторов следующим образом:
категории
Текущий /post/category/category_name
в /category_name
Теги
Current /post/tag/tag_name
для tag/tag_name
автор
Текущее /post/author/author_username
/author/author_username
Я попытался создать пользовательский RewriteRule в .htaccess, который не работал вообще:
RewriteRule ^/([^/]*)$ ./post/category/$1 [L] RewriteRule ^/tag/([^/]*)$ ./post/tag/$1 [L] RewriteRule ^/author/([^/]*)$ ./post/auhtor/$1 [L]
Любая помощь в кодировании правил .htaccess для достижения таких постоянных ссылок очень ценится.
Таким образом, вы можете достичь следующих форматов URL:
категории
category/category_name
Теги
tag/tag_name
автор
/author/author_username
Примечание: всегда рекомендуется использовать префикс url, поэтому для категории префикс категории / должен добавляться в путь, а не напрямую обращаться к нему, потому что у WordPress есть страница и сообщение, к которым обращаются напрямую без префикса.
Я не тестировал WordPress, но с http://htaccess.mwl.be/
Вы были довольно близки:
RewriteRule ^([^/]+)$ /post/category/$1 [L] RewriteRule ^tag/([^/]+)$ /post/tag/$1 [L] RewriteRule ^author/([^/]+)$ /post/author/$1 [L]
Я не тестировал WordPress, но с http://htaccess.mwl.be/
Options -MultiViews RewriteEngine On RewriteBase / RewriteRule ^/([^/]*)$ ./post/category/$1 [L] RewriteRule ^/tag/([^/]*)$ ./post/tag/$1 [L] RewriteRule ^/author/([^/]*)$ ./post/auhtor/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
Если вы не делаете довольно высокоэффективный проект, я бы настоятельно предложил noch возиться со стандартным .htaccess WordPress и вместо этого использовать внутренние функции WordPress для выполнения той же задачи. Несмотря на более чистый проект, это также сделает ваше решение Webserver агностиком (кто знает, хотите ли вы переключиться на NGINX или что-то еще в будущем).
Главная функция WordPress, которая должна помочь вам совсем немного – add_rewrite_rule . В качестве примера ваша ссылка категории может выглядеть так:
// place this rule inside function.php add_action("init", function() { add_rewrite_rule('^([^/]+)/?', 'index.php?category_name=$matches[1]', 'top'); });
Хотя вы должны иметь в виду, что регулярное выражение должно иметь исключения для других объектов верхнего уровня.
Важное примечание из документов wordpress: добавив новые правила, вы должны очистить таблицу правил. Из экранов администрирования WordPress выберите «Настройки» -> «Постоянная ссылка» и просто нажмите «Сохранить изменения» без каких-либо изменений.
Существует также плагин под названием Rewrite . Поскольку он не был обновлен в течение длительного времени, я бы не предложил его использовать в Production, но его код мог бы служить источником вдохновения.