2010-03-13 31 views
5

我有一個(WordPress的)博客評論後,用戶重定向回到與他們的評論錨點的頁面。應該是這樣的:如何用%23重寫一個URL?

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

但不知何故,我得到了很多的插件404的日誌文件我對於這樣的網址:

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

是否有寫的.htaccess重寫規則的方式解決這個問題?

獎勵問題: 任何想法爲什麼發生這種情況,我能做些什麼呢?

+1

重定向是如何完成的? – Gumbo 2010-03-13 13:36:36

+0

@Gumbo:使用302找到的重定向。生成的頭文件如下所示:「位置:/ foo-bar /#comment-571738」 – janpio 2010-03-13 14:27:34

+0

您可以發佈那樣的代碼嗎? – Gumbo 2010-03-13 15:38:02

回答

4

%23#的URL編碼表示。我懷疑你的重寫規則不會滿足%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的特殊含義)。

+0

問題是我可以測試的所有系統上的響應都很好。它是URL中的#並且重定向工作,我不知道它在哪裏以及爲什麼會崩潰。 – janpio 2010-03-13 14:31:53

+0

重寫規則:不起作用。 request_uri的匹配似乎不起作用,那就是我卡住的地方,也來這裏問。 – janpio 2010-03-13 14:32:31

+0

'RewriteCond'不滿意?你有沒有嘗試逃避百分比字符? – 2010-03-13 15:32:54

0

您是否試過B Flag

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

未經測試與您的具體情況,但用於相關的問題。

+0

這個答案是爲人們搜索這個完全相同的問題...道歉有點復興這封閉和老線程 – maddrag0n 2012-12-17 16:27:40