3

我正在开发的一个网站有位于最新新闻目录中的新闻文章。

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

这些现在已根据新闻文章的年份移动到不同的目录中。所以 2013 年现在是:

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

和 2012 年在:

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

我可以使用以下命令轻松将最新消息发布到其中一个目录:

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]

这个网址

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

被重定向到

/news/2012 

但网址中缺少“some-article-2012.html”。

我尝试在重写规则的末尾添加 $1,这样你就有了:

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

但是完整的旧网址会被附加,所以你有:

/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 回答