/%category%/%postname%/
のパーマリンク構造を使ったWPサイトがあります
内部でカテゴリクエリを使用して、ページテンプレートの方法で作成しました。
page-help.php
<?php $my_query = new WP_Query('category_name=help');
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<!--content-->
<?php endwhile; wp_reset_query(); ?>
page-about.php
<?php $my_query = new WP_Query('category_name=about');
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<!--content-->
<?php endwhile; wp_reset_query(); ?>
ものすごく単純。私が抱えている問題は、ニュースセクション用に年ごとのアーカイブが必要だということです。私はarchive.phpをpage-news.phpと同じレイアウトにすることによってこれを行いましたそしてニュースカテゴリの投稿を検索するだけです。 * - これは私の場合は問題ありません。ニュースがあるからです。アーカイブされるコンテンツはこれまでにないでしょう。
私のニュースカテゴリ(latest-news)はaboutカテゴリ(about)の子供なので、ニュースセクションに行くとurlは:
www.example.com/about/latest-news/
ニュースページでは、アーカイブを一覧表示するために次のコードを使用します。
<!-- Gets archive for news-->
<?php $my_query = new WP_Query('category_name=news_article');
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<?php wp_get_archives('type=yearly'); ?>
<!--Ends archive for news-->
<?php endwhile; wp_reset_query(); ?>
それが生み出すリンクは私を自然に導いてくれます
www.example.com/2000
www.example.com/2001
書き換えてそれらをに変更したい
www.example.com/about/latest-news/2000
www.example.com/about/latest-news/2001
これにWPルートの.htaccessを変更しました。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule /([0-9]+/?)$ /about/latest-news/$1 [NC,L] #Added this line
</IfModule>
しかし、私は運がない、URLは
www.example.com/2000
書き直しが間違っているかどうか、別の場所に書き換えているかどうか、またはWordPressが上書きしているかどうかを知らないという問題があります。
どんな助けでも本当に感謝されるでしょう。
まず、追加行が遅すぎます。前の規則はあなたがマッチしたいすべてを捉えます。第二に、それはあなたが望むものではありません。きみの …
RewriteRule /([0-9]+/?)$ /about/latest-news/$1 [NC,L]
…example.com//0000000000000000000/
やexample.com/about/latest-news/2010/
(無限ループ!)のようなリクエストにマッチします。 RewriteRule
の最初の引数は、先頭の/
を省略します。
年間アーカイブに合わせるには、むしろ必要です。
RewriteRule ^(\d\d\d\d)/?$ /about/latest-news/$1 [NC,L]
本当にmod_rewriteが必要かどうかわかりません。書き換えブロックの上の次の行を試してください。
RedirectMatch Permanent ^/(\d\d\d\d)/?$ /about/latest-news/$1
カスタムアーカイブ パーマリンク についてWordPressに伝えなければなりません。タグの下に十分な例があります。
Mod_rewrite( docs )なしでWordpressを使用する場合、すべてのURLはmyblog.com/index.php?p=12
のようになります。 mod_rewriteを使えば、myblog.com/mypost
のようにかわいいURLを作成できます。これがどのように機能するかというと、ApacheはリクエストをWordpressに渡す前に、内部でURL myblog.com/mypost
をmyblog.com/index.php?p=12
に書き換えます。
だからmod_rewriteはあなたのブログのためのかわいいURLを作成するために使われます、しかしそれはあなたのためにWordpressが生成するリンクを書き換えません。
あなたの問題を解決するために、あなたはmod_rewriteルールを変更する必要はないはずです。