2009-02-16 5 views
0

J'essaie d'avoir des URL friendly pour mon blog wordpress, tout en ayant la possibilité de changer le titre d'un post à volonté.Wordpress permalinks: n'utilise que le post_id de l'URL

Ma structure permalien serait comme ceci:

% post_id% /% postname%

Cependant, je voudrais wordpress considérer que le% post_id% de l'URL lors de la recherche pour le poste approprié (un peu comme ici sur stackoverflow)

par exemple:

https://stackoverflow.com/users/810/crossbrowser est le même que https://stackoverflow.com/users/810/hello-world

Je voudrais tout cela pour pointer vers le même poste, celui avec id 345:

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

La documentation mentionne quelque chose qui ressemble à ce que j'essaie de faire: Long permalinks, mais je ne pouvais pas le faire fonctionner.

Voici mon fichier .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] 

MISE À JOUR

Je continue d'essayer ce RewriteRule dans cette online regular expression testing tool, mais il ne fonctionne pas quand je l'ai mis dans mon .htaccess (juste après RewriteBase):

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

Répondre

2

Ma réponse ne répond pas directement à votre question, mais je pense que j'ai quelques points à noter.

Je suis en train d'avoir des URL SEO friendly pour mon blog wordpress, tout en ayant la possibilité de modifier le titre du poste à volonté.

Je ne vois pas immédiatement les avantages de votre poursuite.

L'inconvénient évident de l'inclusion du% post_id% est qu'il rend l'URL plus longue et contient des informations non sémantiques. Wordpress traite déjà avec le scénario de deux façons:

  1. L'URL (permalien/nom du poste) ne change pas lorsque vous modifiez le titre sur un poste publié.

  2. Si vous modifiez le permalien, l'ancien permalien continue de fonctionner et redirige vers le nouveau lien permanent.

+0

Je veux changer de titre parce que j'ai tendance à repenser mes titres parfois et dans ce cas, j'ai juste besoin de changer le permalien (mon petit côté OCD). Si le # 2 est vrai, ce serait parfait. – mbillard

+0

J'ai testé le # 2 et ça marche, merci beaucoup. – mbillard

2

Vous pourrait essayer la règle suivante:

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

Mais je ne sais pas si la substitution est correcte. Vous devez vérifier cela par vous-même.

0

Je suis presque fonctionner en utilisant ceci:

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] 

cependant, il ne fonctionne pas toujours et je ne suis pas sûr que je comprends pourquoi (ou pourquoi il devrait fonctionner)

Il fonctionne avec ces:

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

mais pas avec l'un de ces:

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) 

Toute aide?

+0

Vous devez utiliser des URI canoniques. – Gumbo

+0

Vous voulez en savoir plus? – mbillard

+0

Seule votre application PHP peut le faire car elle peut obtenir le titre d'entrée uniquement lorsque l'ID est donné. – Gumbo

1

En utilisant ce tool, j'ai pu construire une expression qui correspond à tout dans ma liste:

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 

L'expression est:

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

qui se traduirait à cette règle:

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

Cependant, cela ne fonctionne pas.