2010-05-20 18 views
12

मैं एक स्थिति है जहाँ मैं निम्न URL ले जाना चाहते HTML करने के लिए htaccess का उपयोग कैसे करें:यूआरएल पुनर्लेखन के लिए एंकर टैग (#)

/1/जॉन

और यह अपाचे के htaccess फ़ाइल का उपयोग कर अनुप्रेषित है करने के लिए

/page.php?id=1 & नाम जाना = जॉन # जॉन

इतना है कि यह जॉन के नाम के साथ एक HTML एंकर को जाता है।

मुझे विशेष पात्रों से बचने और [एनई] ध्वज जोड़ने के लिए बहुत सारे संदर्भ मिल गए हैं ताकि रीडायरेक्ट # साइन को अनदेखा कर सके, लेकिन ये काम नहीं करते हैं। उदाहरण के लिए, [एनई, आर] जोड़ना मतलब है कि यूआरएल ब्राउज़र पते में मूल रूप से दिखाई देता है: http://example.com/page.php?id=1&name=john#john

उत्तर

0

आप एक एंकर पर आंतरिक रीडायरेक्ट नहीं कर सकते हैं। (बस इसके बारे में सोचें: अपाचे कैसे एंकर पर स्क्रॉल करेगा?) आपका लिंक /1/john#john पर पॉइंटो होना चाहिए। एंकर अनुरोध यूरी का हिस्सा नहीं हैं।

+0

मैं इसे अभ्यास में सत्यापित कर रहा हूं और मानता हूं कि आप सही हैं। ब्राउज़र एंकरों का अर्थ देता है और पृष्ठ में सही बिंदु पर स्क्रॉल करता है; एक अपाचे रीडायरेक्ट ऐसा करने में सक्षम नहीं है क्योंकि पुनर्निर्देशित-यूआरआई ब्राउज़र को पास नहीं किया जाता है। –

2

आप क्या करना चाहते हैं, यूआरएल पुनर्लेखन के साथ पूरा किया जा सकता है, या अधिक विशेष रूप से, यूआरएल सौंदर्यीकरण।

I just quickly found this well explained blog post for you, मुझे आशा है कि यह learning to rewrite URLs-part के साथ आपकी मदद कर सकता है।

#-कुछ के लिए (उम्मीद है कि अब आप जानते हैं कि मैं किस बारे में बात कर रहा हूं), मुझे दोबारा लिखित यूआरएल में एक ही वैरिएबल को पार करने में कोई समस्या नहीं दिख रही है। जैसा:

RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ /$1/$2/\%23$2 [R,NE] 

Btw:

RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ /$1/$2/#$2 [R] 
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/$ /index.php?page=$1&subpage=$2 

हालांकि, आप # भाग से बचने के लिए होगा, और it seems है कि यह इस तरह से किया जा सकता है (पहली पंक्ति के अंतिम भाग नोटिस) , यूआरएल रीराइटिंग नहीं है हार्ड (लेकिन जटिल हो सकता है, और मैं एक विशेषज्ञ नहीं हूं), लेकिन Google रास्ते में बहुत मदद कर सकता है।

+0

हाय सुने, प्रतिक्रिया के लिए धन्यवाद। मुझे नहीं लगता कि मैं जो करने की कोशिश कर रहा हूं वह संभव है। Nikc से इस पृष्ठ पर प्रतिक्रिया देखें। –

19

यह संभव है [NE] ध्वज (नोस्केप) का उपयोग करना संभव है।

डिफ़ॉल्ट रूप से, विशेष वर्ण, जैसे कि & और?, उदाहरण के लिए, उनके हेक्सकोड समकक्ष में परिवर्तित हो जाएंगे। [एनई] ध्वज का उपयोग करने से रोकता है।

अधिक जानकारी http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_ne

4

आप वास्तव में इन चीजों में से एक है, लेकिन दोनों नहीं कर सकते हैं।

आप अपाचे को इंगित करने के लिए [NE] ध्वज का उपयोग कर सकते हैं, '#' चरित्र से बचने के लिए, लेकिन रीडायरेक्ट के लिए काम करने के लिए, आपको केवल एक सापेक्ष पृष्ठ पर रीडायरेक्ट करने के लिए एक पूर्ण यूआरएल निर्दिष्ट करना होगा। अपाचे खिड़की की स्क्रॉलिंग आपके लिए एंकर तक नहीं कर सकता है। लेकिन ब्राउज़र, यदि आप एक पूर्ण यूआरएल पर रीडायरेक्ट करेंगे।

+1

+1 आप सही हैं। ब्राउज़र यह करेगा। –

+1

मूल पोस्टर के लिए: इसे हल करने के लिए एक उत्तर को सही के रूप में इंगित करें। –

+0

हम्म .. अपाचे 2.4.25 के साथ, मैं एक सापेक्ष पृष्ठ निर्दिष्ट कर रहा हूं और अभी भी एक एंकर टैग पर बाहरी रीडायरेक्ट प्राप्त कर रहा हूं। शायद 2013 से चीजें बदल गई हैं? सेक्शन में, 'रिवाइटबेस "/" 'फिर' रिवाइट्रूल^सेवाएं /? $ # सेवा [एल, आर = 301, एनई]' मेरे लिए काम कर रही है। अगर मुझे https में कनवर्ट करते समय नियमों को दोबारा नहीं करना है तो अच्छा क्या है। –

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