Постоянные ссылки Wordpress: только используя post_id из URL - PullRequest
1 голос
/ 16 февраля 2009

Я пытаюсь создать SEO-ориентированные URL для моего блога WordPress, но при этом могу изменить заголовок сообщения по своему усмотрению.

Моя структура постоянных ссылок будет выглядеть так:

% post_id% /% postname%

Однако я бы хотел, чтобы WordPress просто учитывал% post_id% из URL при поиске подходящей записи (вроде как здесь, в stackoverflow)

Например:

https://stackoverflow.com/users/810/crossbrowser совпадает с https://stackoverflow.com/users/810/hello-world

Я бы хотел, чтобы все они указывали на один и тот же пост с идентификатором 345:

http://myblog.com/345/the-name-of-the-post
http://myblog.com/345/any-text
http://myblog.com/345

В документации упоминается нечто, похожее на то, что я пытаюсь сделать: Длинные постоянные ссылки , но я не смог заставить его работать.

Вот мой файл .htaccess:

RewriteEngine on
RewriteBase /

# Let wordpress use pretty permalinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# From the example in the documentation
#RewriteRule /post/([0-9]+)?/?([0-9]+)?/?$ /index.php?p=$1&page=$2 [QSA]

UPDATE

Я продолжаю пробовать этот RewriteRule в этом онлайн-инструменте тестирования регулярных выражений , но он не работает, когда я помещаю его в свой .htaccess (сразу после RewriteBase):

RewriteRule ^([0-9]+)/?([a-zA-Z0-9\-]+)/?$ index.php?p=$1 [QSA]

Ответы [ 4 ]

2 голосов
/ 16 февраля 2009

Вы можете попробовать следующее правило:

RewriteRule ^(\d+)(/[^/]*)?$ index.php?id=$1 [L,QSA]

Но я не знаю, правильная ли замена. Вы должны проверить это сами.

1 голос
/ 16 февраля 2009

Мой ответ не дает прямого ответа на ваш вопрос, но я думаю, у меня есть некоторые моменты, которые стоит отметить.

Я пытаюсь создать SEO-дружественные URL для моего блога WordPress, пока еще иметь гибкость, чтобы изменить заголовок сообщения по желанию.

Я не сразу вижу выгоду от вашей погони.

Очевидным недостатком включения% post_id% является то, что он удлиняет URL и содержит несемантическую информацию. Wordpress уже имеет дело со сценарием двумя способами:

  1. URL-адрес (постоянная ссылка / название сообщения) не изменяется при изменении заголовка опубликованного сообщения.

  2. Если вы измените постоянную ссылку, старая постоянная ссылка продолжит работать и перенаправит на новую постоянную ссылку.

1 голос
/ 16 февраля 2009

Используя этот инструмент , я смог создать выражение, соответствующее всему в моем списке:

http://myblog.com/435
http://myblog.com/435/the-post-title
http://myblog.com/435/the-po
http://myblog.com/435/asdf
http://myblog.com/435/the-9887-title
http://myblog.com/435/123

Выражение:

http://myblog.com/([0-9]+)/?([a-zA-Z0-9\-]+)/?

что бы перевести на это правило:

RewriteRule ^([0-9]+)/?([a-zA-Z0-9\-]+)/?$ index.php?p=$1 [QSA]

однако, это не работает.

0 голосов
/ 16 февраля 2009

Я почти заработал, используя это:

RewriteEngine on
RewriteBase /

RewriteRule ^([0-9]+)?/?(^/+)?/?$ /index.php?p=$1 [QSA]

# Allow pretty permalinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

однако, это не всегда работает, и я не уверен, что понимаю, почему (или почему это должно работать)

Работает с этими:

http://myblog.com/435
http://myblog.com/435/the-post-title
http://myblog.com/435/the-po

но ни с одним из них:

http://myblog.com/435/asdf (when there's no dash)
http://myblog.com/435/the-9887-title (whenever there's a number in the post title)

Любая помощь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...