2009-08-18 22 views
6

मुझे मानक आवक यूआरएल लेने और को फिर से लिखने की आवश्यकता है उन्हें एक ही पृष्ठ पर विशिष्ट एंकरों को लक्षित करने के लिए पुनर्निर्देशित करें (आने वाले HTML पृष्ठ का नाम एंकर नाम बन जाता है)। उदाहरण के लिए, नियम इस तरह होगा:एंकर (#) वाले यूआरएल पर रीडायरेक्ट कैसे करें?

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

तो इस यूआरएल:

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

... बन जाएगा:

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

नियम ही ठीक काम करता है, लेकिन # चरित्र ब्राउज़र पता बार में एन्कोड किया गया है:

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

जो निश्चित रूप से एक एंकर के रूप में सही ढंग से काम नहीं करता है। क्या हैशैक में कोई रास्ता है कि इसे हैश को एन्कोड न करें? मैंने इसे \# से बचने की भी कोशिश की लेकिन इससे कोई फर्क नहीं पड़ता।

उत्तर

9

अपने नियम में noescape (NE) ध्वज का प्रयास करें:

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

बहुत बढ़िया है, धन्यवाद। मुझे लगा कि इसे कुछ आसान होना था, लेकिन Google मुझे रास्ता नहीं दिखा रहा था;) –

5

उपयोग NE, या कोई भागने झंडा:

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

+3

पैट ने मुझे 57 सेकंड तक हरा दिया;) दुनिया को पता चलो कि "नए उत्तर" चेतावनी उस से अधिक समय लेती है! – inerte

+1

पैट के लिए विजय! :) – Pat

+1

"हारने वाले" के लिए +1 क्योंकि उसका कोड एक बाइट छोटा है :-) – Olaf

संबंधित मुद्दे