2009-08-18 34 views
6

Tôi cần có các url đến tiêu chuẩn và viết lại chuyển hướng chúng để nhắm mục tiêu các neo cụ thể trên một trang (tên trang html đến sẽ trở thành tên neo). Ví dụ, các quy tắc sẽ như thế này:Làm thế nào để chuyển hướng đến một url có chứa một neo (#)?

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [R] 

Vì vậy url này:

http://foo.com/files/bar.html 

... sẽ trở thành:

http://foo.com/test.html#bar 

Nguyên tắc riêng của mình hoạt động tốt, nhưng nhân vật # được mã hóa trong thanh địa chỉ của trình duyệt thành:

http://foo.com/test.html%23bar 

mà tất nhiên không hoạt động chính xác như một neo. Có cách nào trong .htaccess để buộc nó không mã hóa băm? Tôi cũng đã cố gắng thoát nó như \# nhưng điều đó không tạo ra sự khác biệt nào.

Trả lời

9

Thử noescape (NE) cờ trong quy tắc của bạn:

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [NE, R] 
+0

Awesome, cảm ơn. Tôi nghĩ rằng nó phải là một cái gì đó đơn giản, nhưng Google đã không cho tôi thấy cách;) –

5

Sử dụng NE, hoặc No Escape cờ:

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [NE,R]

+3

Pat đánh bại tôi bằng 57 giây;) Hãy để thế giới biết cảnh báo "câu trả lời mới" của SO mất nhiều thời gian hơn thế! – inerte

+1

Chiến thắng cho Pat! :) – Pat

+1

+1 cho "kẻ thua cuộc" vì mã của anh ấy ngắn hơn một byte :-) – Olaf

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