2011-07-11 10 views
17

जाहिर है, मेरी .htaccess पुनर्लेखन मेरे पृष्ठ के सभी $_GET -variables अप खाती है:.htaccess: Get चर फिर से लिखने में खो जाते हैं

जब यूआरएल http://192.168.1.1/welcome/test?getvar=true पहुँचने और मेरी index.php फ़ाइल में var_dump($_GET) चल रहा है, मैं इस मिल इस उत्पादन:

array 
'/welcome/test' => string '' (length=0) 

तो कोई $_GET डाटा उपलब्ध है और मेरे URL से getvar -variable का कोई संकेत नहीं।

यहाँ मेरी .htaccess है:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

क्या मैं सुनिश्चित करने के लिए है कि मेरे फिर से लिखने के रूप में इरादा लेकिन $_GET -variables अभी भी एक्सेस किया काम कर रहा है बदलना चाहिए? @ DonSeba के योगदान जोड़ा गया है क्योंकि यह सही है:

RewriteRule ^(.*)$ index.php?route=/$1 [QSA,L]

संपादित करें:

उत्तर

53

आप "QueryString संलग्न" विकल्प की जरूरत है।

+0

धन्यवाद! ऐसा लगता है कि यह अच्छी तरह से काम कर रहा है। एक quickie: ऐसा प्रतीत होता है कि '$ _GET' पैराम पकड़े जाने के लिए अंतिम स्लैश आवश्यक है। केक रखना और इसे खाना संभव होगा, यानी। 'स्वागत/परीक्षण' avar = 1' और 'स्वागत/परीक्षण /? avar = 1' दोनों करने में सक्षम हो? धन्यवाद! – Industrial

+0

मुझे उस पर यकीन नहीं है। क्या यह आपका लापता चर नाम हो सकता है? –

+0

परीक्षण और यहां enging स्लैश के बिना ठीक काम करता है। इसे JQuery UI Autocomplete के लिए उपयोग किया जाता है, क्योंकि वह हमेशा 'टर्म' पैरामीटर को जोड़ता है। 'पुनर्लेखन^^ सेवा/स्वत: पूर्ण /(.+)$ autocomplete.php? प्रकार = $ 2 [क्यूएसए, एल]'। –

6

मामूली विस्तार परिवर्तन:

RewriteRule ^(.*)$ index.php?/$1 [L] 

RewriteRule ^(.*)$ index.php?route=$1 [QSA,L] 

के लिए अब सभी मार्गों $ _GET [ "मार्ग"]

0
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^myapi(.*) ./my_real_api_file.php? [QSA] 
</IfModule> 

मेरे लिए चाल किया में दिखाई जाएगी।

अब आप अनुरोध कर सकते हैं: http://www.mydomain.com/myapi?foo=xy&bar=ab

और पुनः निर्देशित किया जाएगा: http://www.mydomain.com/my_real_api_file.php?foo=xy&bar=ab

काफी अपने एपीआई कोड को छिपाने के लिए उपयोगी हो सकता है।

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