0

有必要移动我博客的位置,我正在努力确保我通过旧链接捕获所有链接并将它们重定向到新链接。

博客已从http://example.com/移至http://example.com/blog/

URL 用于生成帖子名称之前的日期(默认情况下),我决定不这样做,以保持 URL 令人难忘。

问题是有一个?原始 URL 中的字符(我正在使用的 CMS 生成的默认 URL,它会导致重定向出现问题:

RewriteRule ^post.php?s=2012-01-01-blog-post$ /blog/blog-post? [R=301,L]

所以我需要逃避?不知何故,但我不知道怎么做!

我可以使用更通用的重定向来避免 ? 但这会重定向到列表页面,而不是文章本身:

RewriteRule ^post.php$ http://tempertemper.net/blog/? [R=301,L] 

我如何让它阅读?作为 URL 的一部分!?

谢谢参观!

马丁:)

4

1 回答 1

1

我认为您需要使用 RewriteCond 来检查是否存在 QUERY_STRING 值,然后假设查询字符串与您的博客模式匹配,捕获博客名称,然后在 RewriteRule 中使用捕获的值。像这样的东西:

RewriteCond ${QUERY_STRING} ^s=[0-9]{4}-[0-9]{2}-[0-9]{2}-(.*)$
RewriteRule ^post.php$ /blog/%1 [R=permanent,L]

%1 指的是匹配 RewriteCond 中的第一个捕获模式(除非 RewriteCond 匹配,否则 RewriteRule 不会触发)。

这是必要的原因是 RewriteRule 无法将查询字符串视为请求路径的一部分,因此您必须在 RewriteRule 之前使用 RewriteCond 检查(并捕获)查询字符串。

于 2012-08-26T16:41:55.863 回答