1

投稿のタイトルを自由に変更できる柔軟性を持ちながら、ワードプレスのブログにSEO対応のURLを作成しようとしています。

私のパーマリンク構造は次のようになります。

%post_id%/%postname%

ただし、適切な投稿を探すときに、WordPressでURLの%post_id%だけを考慮してほしい(stackoverflowのようなもの)

例えば:

https://stackoverflow.com/users/810/crossbrowserはhttps://stackoverflow.com/users/810/hello-worldと同じです

これらすべてが同じ投稿、ID345の投稿を指すようにしたいと思います。

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]

アップデート

このオンライン正規表現テストツールでこのRewriteRuleを試し続けていますが、.htaccess(RewriteBaseの直後)に配置すると機能しません。

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

4 に答える 4

2

次のルールを試すことができます。

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

しかし、置換が正しいかどうかはわかりません。自分で確認する必要があります。

于 2009-02-16T16:09:20.743 に答える
1

このツールを使用することで、リストのすべてに一致する式を作成できました。

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]

ただし、機能しません。

于 2009-02-16T19:49:59.247 に答える
1

私の回答はあなたの質問に直接答えるものではありませんが、注目すべき点がいくつかあると思います。

投稿のタイトルを自由に変更できる柔軟性を保ちながら、ワードプレスのブログに SEO に適した URL を設定しようとしています。

私はあなたの追求の利益をすぐには見ていません。

%post_id% を含めることの明らかな欠点は、URL が長くなり、セマンティックでない情報が含まれることです。Wordpress は既に次の 2 つの方法でシナリオを処理しています。

  1. 公開された投稿のタイトルを変更しても、URL (パーマリンク/投稿名) は変更されません。

  2. パーマリンクを変更しても、古いパーマリンクは引き続き機能し、新しいパーマリンクにリダイレクトされます。

于 2009-02-16T20:42:37.637 に答える
0

私はこれを使ってほとんどそれを動かしました:

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)

何か助けはありますか?

于 2009-02-16T17:54:32.627 に答える