2016-01-16 2 views
8

В настоящее время я добавил пользовательскую структуру для сообщений premalinks /post/%post_id% через настройки постоянных ссылок в Admin.Пользовательские постоянные ссылки Wordpress с использованием .htaccess

Поскольку мне нужно переписать пермалинки для категорий, тегов и авторских страниц следующим образом:

Категории

Текущая /post/category/category_name в /category_name

Теги

Текущая /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 кодирования для достижения таких постоянных ссылок очень ценится.

+0

Вы ничего не пробовали? –

+0

@MikeRockett пока что http://pastebin.com/4uDvZMn3, но не работал для меня. –

+0

Ваши 'RewriteRule' обратные. –

ответ

1

Я не тестировал с WordPress, но с http://htaccess.mwl.be/

Вы были довольно близки:

RewriteRule ^([^/]+)$ /post/category/$1 [L] 
RewriteRule ^tag/([^/]+)$ /post/tag/$1 [L] 
RewriteRule ^author/([^/]+)$ /post/author/$1 [L] 
+0

@ ihab-abdel-rahim, разве это не работает для вас? – yivi

4
  1. Убедитесь, что вы переписывания двигатель в вашей конфигурации апача
  2. Вход в ваш WordPress с правами администратора и перейдите в Настройки -> Permalinks, как показано в прикрепленных трех изображениях. enter image description here
  3. Если постоянная ссылка не обновлена, значит у вас нет доступа на запись к корню веб-сайта или переписан модуль apache не включен.
  4. Если появляется сообщение с постоянной ссылкой, это значит, что он также создал .htaccess в корневом каталоге сайта WordPress.

Таким образом, вы можете достичь следующих URL-адресов форматов:

Категории

category/category_name 

Метки

tag/tag_name 

Автор

/author/author_username 

Примечание: всегда рекомендуется использовать префикс url, поэтому для категории необходимо добавить /префикс категории, а не напрямую , так как у Wordpress есть страница и сообщение, к которым обращаются напрямую без префикса.

+0

Ну, приятель, здесь цель - заставить его работать, даже если нужно следить за abc WordPress. Я лично проверил его на своем столе, и он работал точно так же, как описано выше. –

+3

Не знаете, почему это получило голосующий голос. Автор явно не уточнил, что он пробовал в админе, и это хороший ответ. – Shawn

0

Я не тестировал с 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] 
+0

если этот файл .htaccess не работает, пожалуйста, зайдите в . mod_rewrite уже включен или нет. Спасибо. –

0

Если вы не делаете проект довольно высокой производительности, я бы настоятельно рекомендуем 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, но его код мог бы служить источником вдохновения.

+0

Я использую структуру по умолчанию /? Cat = $ id, поэтому изменение правила на index.php? Cat = $ matches [1] не работает. Когда try/$ id i перенаправляется на home index.php. Какие-либо предложения? –

+0

мое регулярное выражение было неисправным. теперь это исправлено. – roman

Смежные вопросы