如何用%23重写URL?

时间:2010-03-13 13:34:38

标签: wordpress .htaccess mod-rewrite

我有一个(wordpress)博客,在评论之后,用户被重定向回页面并带有评论的锚点。应该是这样的:

http://example.org/foo-bar/#comment-570630

但不知怎的,我在这些网址中得到了很多404我的日志文件:

http://example.org/foo-bar/%23comment-570630

有没有办法写一个.htaccess重写规则来解决这个问题?

奖金问题: 知道为什么会发生这种情况以及我能做些什么呢?

2 个答案:

答案 0 :(得分:4)

%23#的网址编码表示。我怀疑你的重写规则不会满足%23。您应该研究如何构建响应。具体来说,任何URL编码功能。

但是,可以使用重写规则解决您的问题。了解在提交评论后您将向客户返回两个回复。这就是为什么最好纠正第一个反应。

# http://example.org/foo-bar/%23comment-570630 -> http://example.org/foo-bar/#comment-570630
RewriteCond %{REQUEST_URI} %23comment-\d+$
RewriteRule (.+)\/%23-comment(\d+)$ http://host/$1/#comment-$2 [R=301]

它未经测试,但应该可以工作(我不确定是否转义\%,因为它在mod_rewrite中具有特殊含义)。

答案 1 :(得分:0)

您是否尝试过B Flag

RewriteCond %{REQUEST_URI} %23comment-\d+$
RewriteRule (.+)\/%23-comment(\d+)$ http://host/$1/#comment-$2 [B,R=301]

未经测试您的具体案例,但用于相关问题。