2011-05-20 9 views
6

मैं RewriteRule के माध्यम से एक दोस्ताना यूआरएल बनाने के लिए कोशिश कर रहा हूँ, लेकिन यह चर मूल्य के भाग के रूप # अनदेखी रखता है।
.htaccess पर लाइन इसRewriteRule और संख्या चिह्न "#"

RewriteRule ^key/(.+)/$ index.php?key=$1 

के रूप में सरल है और अनुरोध किया गया URL

http://www.example.com/key/c%23/ 

है, लेकिन मैं केवल चर के रूप में और न c%23c हो रही है।

मैं वास्तव में क्या गलत कर रहा हूं?

उत्तर

4

अंत में कुछ खुदाई के बाद, मैं इस पुल में कामयाब रहे।

यह सिर्फ कैसे मैं उस व्याख्या को बायपास और `% 23` का उपयोग जैसे स्टैक ओवरफ़्लो करता है सकते हैं इस तरह के #

RewriteRule ^key/(.+)/$ index.php?key=$1 [B]
+0

जब तक कोई अनुरोध # चरित्र को संशोधित करने के लिए मिलता है तो आम तौर पर पहले से ही% 23 में परिवर्तित होना आवश्यक है। हालांकि, [बी] विकल्प का उपयोग करने का सही विकल्प है ताकि% 23 ठीक से लिखा जा सके। – John

0

%23 एक हैश प्रतीक (#) है, इसलिए यह (और उसके बाद कुछ भी) वास्तव में mod_rewrite द्वारा पार्स नहीं किया जाता है। इसलिए वास्तविक URL http://www.foo.com/key/c है, बिना %23। हालांकि, अन्य डैश-कोड ठीक काम करते हैं।

0

%23 एक हैश चिह्न (#) है। मैं अनुमान लगा रहा हूं कि ब्राउज़र हैश को एंकर के रूप में व्याख्या कर रहा है और इसे सर्वर पर नहीं भेज रहा है। उदाहरण के लिए, यदि आप उपयोगकर्ता http://www.foo.com/key/c%20/ उपयोगकर्ता को "सी [स्पेस]" प्राप्त करेंगे।

+1

लेकिन जैसा कि गैर अक्षरांकीय अक्षर से बचने के लिए फिर से लिखना पर B झंडा जरूरत है? (http://stackoverflow.com/questions/tagged/c%23) – GRaecuS

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