3

私が取り組んでいるサイトでは、最新のニュース ディレクトリ内にニュース記事がありました。

/news/latestnews/some-article-2012.html

これらは、ニュース記事の年に応じて異なるディレクトリに移動されました。したがって、2013年は現在次の範囲内にあります。

/news/2013/some-article-2013.html

および 2012 年は次のとおりです。

/news/2012/some-article-2012.html

次を使用して、ディレクトリの1つに簡単に最新ニュースを送信できます。

RewriteRule ^news/latestnews/(.*)$ /news/2011/$1 [R=301,L]

しかし、特定の年のディレクトリにリダイレクトする必要があります。すべてのニュース記事には、名前に年が含まれています。つまり、some-article-2012 または some-article-2013 です。

年もチェックするようにルールを調整するのに役立ちます。

ありがとう

=========編集=======

RewriteCond を追加して正しいディレクトリにリダイレクトすることができましたが、要求されたファイル名を追加するのに問題がありました。

だからこのルールを使えば

RewriteCond %{REQUEST_URI} ^/news/latestnews/(.*)$
RewriteCond %$1 ^(.*)2012(.*)$
RewriteRule ^(.*)$ /news/2012 [R=301,L]

この URL

/news/latestnews/some-article-2012.html

にリダイレクトされます

/news/2012 

しかし、「some-article-2012.html」が URL にありません。

$1 を rewriterule の最後に追加しようとしたので、次のようになります。

    RewriteRule ^(.*)$ /news/2012$1 [R=301,L]

ただし、完全な古い URL が追加されるため、次のようになります。

/news/2012/news/latestnews/some-article-2012.html
4

1 に答える 1

10

私が投稿した別のフォーラムのユーザーによるものだったので、これを完全に信用することはできませんが、ここで誰かを助けるために共有したいと思いました.

RewriteCond %{REQUEST_URI} ^/news/latestnews/(.*)$
RewriteRule ^news/latestnews/(.*)(201[0-9])(.*)$ /news/$2/$1$2$3 [R=301,L]

これは実際には 2010 年以降のすべての年を扱います。

于 2013-07-12T10:44:54.013 に答える