apache - Prevent rules conflicts with htaccess' RewriteRule -


मैं रूपांतरण के लिए कुछ RewriteRule s का उपयोग करना चाहूंगा:

    < Li>

    = & gt; index.php? Id = blah

  • = & gt; index.php? Id = blah और उपयोगकर्ता = किसी

    यहां एचटीएसीएसीएसी है: < पूर्व> & lt; ifModule mod_rewrite.c & gt; RewriteEngine RewriteBase / RewriteCond पर% {REQUEST_FILENAME}! -f पुनर्लेखन कन्वर्ट% {REQUEST_FILENAME}! -d रिक्राइटआर्यूल ^ (। *) $ /index.php?id=$1 [L] RewriteRule ^ (। *) / (। *) $ /index.php?id=$2&user=$1 [एल] & lt; / IfModule & gt;

    लेकिन ऐसा लगता है कि दो अंतिम नियम असंगत हैं: इस htaccess के साथ, मुझे कुछ 500 आंतरिक सर्वर त्रुटि मिलता है।

    कैसे दो नियम बनाने के लिए कि वे एक-दूसरे को "ओवरलैप" न करें?

    नोट:

    • इनमें से प्रत्येक 2 नियम अकेले काम करते हैं

    • जब मैं दूसरे नियम का उपयोग करता हूं, तब = & gt; index.php? Id = blah और amp; उपयोगकर्ता = कोई काम करता है, लेकिन ऐसा लगता है कि रूट फ़ोल्डर अब / नहीं है, लेकिन / किसी / और तो सीएसएस नहीं मिला ... इस मामले में बेस फ़ोल्डर को कैसे बदला जाना चाहिए?

      आपके पास 4 समस्याएं हैं:

      1. आपका पहला नियम (। *) कुछ भी / Index.php? Id = $ 1
      2. आपका दूसरा नियम यह सत्यापित नहीं करता कि कोई फ़ाइल या फ़ोल्डर मौजूद है और एक अनंत लूप में गिर सकता है जिसके कारण 500 आंतरिक सर्वर त्रुटि
      3. अपने नियमों का क्रम
      4. आप सीएसएस और छवियां प्रदान करने के लिए सापेक्ष पथ का उपयोग कर रहे हैं जो आपके यूआरएल स्वरूपों जैसे कि domain.com/ कोई भी / कुछ

        पुनर्निर्देशित समस्या को ठीक करने के लिए, आप इसका उपयोग कर सकते हैं:

          & lt; ifModule mod_rewrite.c & gt; RewriteEngine RewriteBase / RewriteRule ^ index \ .php $ - [L] रीव्रैटकॉन्ड% {REQUEST_FILENAME}! -f पुनर्लेखनकॉन्ड% {REQUEST_FILENAME}! -डी रिवेराइटियम ^ ([^ /] +) / ([^ /] +) $ / Index.php? Id = $ 2 & amp; उपयोगकर्ता = $ 1 [एल] पुनःलेखन कन्वर्ट% {REQUEST_FILENAME}! -f पुनर्लेखन कन्वर्ट% {REQUEST_FILENAME}! -डी रिवेराइटियम ^ ([^ /] +) $ / index.php?id=$1 [ एल] & lt; / ifModule & gt;   

        चूंकि मैंने regex ( ([^ /] +) जिसका अर्थ कुछ भी नहीं है / ) बदल गया है, जो डेटा आप चाहते हैं और ऑर्डर इस परिदृश्य में कोई फर्क नहीं पड़ेगा क्योंकि यह विशेष रूप से मैच होगा:

          domain.com/anything   

        और <पूर्व> domain.com/anything/anything

        सीएसएस और छवियों को ठीक करने के लिए आप अपने संपूर्ण यूआरएल को परिभाषित करने के लिए base टैग का उपयोग कर सकते हैं आपका HTML:

          & lt; base href = "http://domain.com/" & gt;    

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

logging - How can I log both the Request.InputStream and Response.OutputStream traffic in my ASP.NET MVC3 Application for specific Actions? -

java - Why my included JSP file won't get processed correctly? -