2010-03-13 40 views
5

Tôi có một blog (wordpress), nơi sau khi nhận xét người dùng được chuyển hướng trở lại trang với một neo để bình luận của họ. Nên xem xét như thế này:Cách viết lại URL có% 23 trong đó?

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

Nhưng bằng cách nào đó tôi nhận được rất nhiều 404 ins log của tôi cho URL như vậy:

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

Có cách nào để viết một quy tắc .htaccess viết lại để sửa lỗi này?

Câu hỏi thưởng: Bất kỳ ý tưởng nào tại sao điều này xảy ra và tôi có thể làm gì với nó?

+1

Chuyển hướng được thực hiện như thế nào? – Gumbo

+0

@Gumbo: Với chuyển hướng 302 được tìm thấy. Tiêu đề được tạo trông giống như sau: "Vị trí:/foo-bar/# comment-571738" – janpio

+0

Bạn có thể đăng mã thực hiện điều đó không? – Gumbo

Trả lời

4

%23 là đại diện được mã hóa URL của #. Tôi nghi ngờ các quy tắc viết lại của bạn sẽ không thỏa mãn %23. Bạn nên điều tra cách phản ứng đang được xây dựng. Cụ thể, mọi chức năng mã hóa URL.

Tuy nhiên, bạn có thể giải quyết vấn đề của mình bằng quy tắc viết lại. Hiểu rằng bạn sẽ trả về hai câu trả lời cho khách hàng sau khi nhận xét. Đây là lý do tại sao nó là thích hợp hơn để sửa phản ứng đầu tiên.

# 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] 

Đó là chưa được kiểm tra, nhưng nên làm việc (tôi không chắc chắn về việc thoát \% vì nó có ý nghĩa đặc biệt trong mod_rewrite).

+0

Vấn đề là phản hồi là tốt trên tất cả các hệ thống tôi có thể kiểm tra nó. Đó là # trong URL và chuyển hướng hoạt động, tôi không biết ở đâu và tại sao điều này có thể phá vỡ. – janpio

+0

Để quy tắc viết lại của bạn: Không hoạt động. Sự phù hợp của request_uri dường như không hoạt động, đó là nơi tôi gặp khó khăn và đến đây để hỏi, quá. – janpio

+0

'RewriteCond' không hài lòng? Bạn đã thử thoát khỏi nhân vật tỷ lệ phần trăm chưa? –

0

Bạn đã thử các B Flag?

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

chưa được kiểm tra với trường hợp cụ thể của bạn, nhưng được sử dụng cho một vấn đề liên quan.

+0

câu trả lời này là dành cho những người googling cho vấn đề này chính xác cùng ... xin lỗi cho kinda reviving này đóng cửa và thread cũ – maddrag0n

Các vấn đề liên quan