2012-10-21 19 views
9

के रूप में फिर से लिखें, मैंने इस प्रश्न की खोज की है, लेकिन मैं केवल उन विशिष्ट उत्तरों में आ गया हूं जो मेरी विशिष्ट आवश्यकताओं को पूरा करने में मुश्किल लगती हैं।.htaccess क्वेरी स्ट्रिंग को पथ

http://www.example.org/test.php?whatever=something 

मैं इसे फिर से लिखने के लिए चाहते हैं ताकि वह इस रूप में प्रकट होता है::

मान लें कि यूआरएल मैं फिर से लिखने का प्रयास कर रहा हूँ यह है चलो

http://www.example.org/test/something 

मैं यह कैसे कर सकते हैं?

+2

यहाँ कुछ उदाहरण हैं: https://wiki.apache.org/httpd/RewriteQueryString –

उत्तर

19

रूट करने के लिए आदेश आंतरिक रूप से करने के लिए /test/something तरह के अनुरोध इसलिए पुनर्लेखन /test.php?whatever=something पर सामग्री परोसा जाता है कि, आप अपने दस्तावेज़ जड़ में htaccess फ़ाइल में इन नियमों का प्रयोग करेंगे में:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?test/(.*?)/?$ /test.php?whatever=$1 [L] 

और क्रम में पुनर्निर्देशित करने के लिए अच्छे के लिए देख एक के लिए क्वेरी स्ट्रिंग यूआरएल:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /test\.php\?whatever=([^\&\ ]+) 
RewriteRule ^/?test\.php$ /test/%1? [L,R=301] 
+0

बिल्कुल सही, धन्यवाद! – UserIsCorrupt

+0

यदि उपरोक्त कोड का उपयोग करके किसी को क्वेरी स्ट्रिंग में समस्या हो रही है तो उन्हें अंतिम नियम के अंत में पिछला प्रश्न चिह्न जोड़ने की आवश्यकता है, यहां एक अद्यतन कोड 'रिवाइटकंड% {THE_REQUEST}^[AZ] {3, 9} \ /test\.php\?whatever = ([^ \ & \] +) रिवाइट्रूल^/? परीक्षण \ .php $/test /% 1? [एल, आर = 301] ' –

+0

मैंने एक ही नियम का उपयोग किया है लेकिन यह मेरा यूआरएल काम नहीं कर रहा है http://example.com/directory1/directory2/login.php?id=8 और मैं इसे http की तरह बनाना चाहता हूं: //example.com/directory1/directory2/login/8 कृपया मुझे बताएं कि इसे कैसे ठीक किया जाए –