2011-03-07 15 views
12

यहाँ मैं अब तक क्या कर लिया है:सभी अनुरोधों को index.php पर रीडायरेक्ट कैसे करें और अन्य GET पैराम रखें?

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !index.php 
RewriteRule .* index.php?url=$0 [L] 

लेकिन जब मैं /a?b=c तरह soemthing और उसके बाद प्राप्त पैरामीटर का निरीक्षण करने के लिए जाना, मैं केवल url के लिए a मिलता है, और b खो दिया है। मैं इसे कैसे बरकरार रख सकता हूं?

उत्तर

15
 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !index.php 
RewriteRule .* index.php?url=$0 [QSA,L] 

आपको अपने पुनर्लेखन नियम में QSA की आवश्यकता है।

+1

यह भी मेरी CSS और JS फ़ाइलों पुनर्निर्देश ... मैं उन जहां वे चाहिए करने के लिए काम कर रहे हैं और उनका कहना है रखने के लिए करना चाहते हैं। – vsync

+1

@vsync फिर एक 'रिवाइटकंड' जोड़ें जो उन फ़ाइलों से मेल नहीं खाता है। उदाहरण के लिए: 'js' निर्देशिका के तहत किसी भी फाइल को फिर से लिखने के लिए 'RewriteCond% {REQUEST_URI}! ^/Js /'। –

23

कैसे FallbackResource निर्देशों का उपयोग के बारे में:

<Directory /web/example.com/htdocs/blog> 
    FallbackResource /index.php 
</Directory> 

इस तरह आप हर अनुरोध पर modRewrite मॉड्यूल कॉल करने के लिए नहीं है "अनुरोध करता है कि एक फाइल करने के लिए मैप नहीं के लिए एक सामान्य यूआरएल को परिभाषित करें"।

http://httpd.apache.org/docs/2.2/mod/mod_dir.html#fallbackresource

+1

यदि आपकी अनुक्रमणिका रूट निर्देशिका पर नहीं है तो कोई इसे कैसे काम करता है? जैसे मैं mysite.com/project/* को mysite.com/project/index.php पर फ़ॉलबैक करना चाहता हूं। मैं FallbackResource /project/index.php कर सकता हूं, लेकिन किसी भी तरह से .htaccess से संबंधित पथ होना अच्छा होगा जहां इसे परिभाषित किया गया है (इस तरह मैं प्रोजेक्ट डीआईआर को प्रोजेक्टएक्स डीआईआर में संशोधित किए बिना .htaccess को संशोधित कर सकता हूं) – Nathan

+2

उपयोग नहीं कर रहा है प्रत्यक्ष रीडायरेक्ट की तुलना में वास्तव में धीमी गति से गिरावट? चूंकि विज़िटर को तब तक इंतजार करना पड़ता है जब तक कि इंजन index.php पर रीडायरेक्ट होने से पहले सभी ** मैचों में विफल रहता है। – Pacerier

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