我有一个(wordpress)博客,在评论之后,用户被重定向回页面并带有评论的锚点。应该是这样的:
http://example.org/foo-bar/#comment-570630
但不知怎的,我在这些网址中得到了很多404我的日志文件:
http://example.org/foo-bar/%23comment-570630
有没有办法写一个.htaccess重写规则来解决这个问题?
奖金问题: 知道为什么会发生这种情况以及我能做些什么呢?
答案 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]
未经测试您的具体案例,但用于相关问题。