रूट यूआरएल को उपनिर्देशिका में रीडायरेक्ट करने के लिए.htaccess फिर से लिखें




mod-rewrite redirect (16)

रूट से सबफ़ोल्डर तक अदृश्य रीडायरेक्ट सेट करने के लिए, आप /root/.htaccess में निम्न RRriteRule का उपयोग कर सकते हैं:

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/subfolder
RewriteRule ^(.*)$ /subfolder/$1 [NC,L]

ऊपर दिया गया नियम आंतरिक रूप से ब्राउजर को रीडायरेक्ट करेगा:

सेवा मेरे

तथा

सेवा मेरे

जबकि ब्राउजर रूट फ़ोल्डर पर रहेगा।

पाने की कोशिश कर रहा हूँ

www.example.com

सीधे जाने के लिए

www.example.com/store

मैंने कोड के कई बिट्स और कोई काम नहीं किया है।

मैंने क्या कोशिश की है:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]

मैं क्या गलत कर रहा हूं?


htaccess में नीचे लाइनों का उपयोग करने की कोशिश करें

नोट: आपको यह जांचने की आवश्यकता हो सकती है कि default.html का नाम क्या है

default.html वह फ़ाइल है जो रूट फ़ोल्डर में डिफ़ॉल्ट रूप से लोड होती है।

RewriteEngine

Redirect /default.html http://example.com/store/


मैं मूल प्रश्न का उत्तर दूंगा कि एक और संभावित वाक्यविन्यास (अन्य उत्तरों में से कई हैं) को इंगित करके, लेकिन किसी चीज को इंगित करके मुझे एक बार निपटना पड़ा, जिसने मुझे पता लगाने में कुछ समय लगाया:

What am I doing wrong?

एक संभावना है कि% {HTTP_HOST} ठीक से पॉप्युलेट नहीं किया जा रहा है, या बिल्कुल। हालांकि, मैंने केवल देखा है कि किसी साझा होस्ट पर केवल एक मशीन में होता है, कुछ कस्टम पैच किए गए अपाचे 2.2 के साथ, फिर भी यह एक संभावना है।


मैं आपके प्रश्न को समझ नहीं पा रहा हूं ...

यदि आप प्रत्येक अनुरोध को सबफ़ोल्डर को रीडायरेक्ट करना चाहते हैं:

RewriteRule ^(.*)$ shop/$1 [L,QSA]

http://www.example.com/* -> wwwroot/store/*

यदि आप एक सबफ़ोल्डर पर रीडायरेक्ट करना चाहते हैं जिसमें डोमेन नाम है

RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$
RewriteRule ^(.*)$ %1/$1 [L,QSA]

http://www.example.com/* -> wwwroot/example.com/*

यह सबसे आसान समाधान लग रहा था:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]

मुझे कुछ अन्य समाधानों के साथ रीडायरेक्ट लूप मिल रहा था।


इसे इस्तेमाल करे:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^$ store [L]

यदि आप बाहरी रीडायरेक्ट चाहते हैं (जो विज़िट करने वाले ब्राउज़र को रीडायरेक्ट किए गए यूआरएल को दिखाने का कारण बनता है), तो वहां R फ्लैग भी सेट करें:

RewriteRule ^$ /store [L,R=301]

उपर्युक्त समाधानों में से अधिकांश सही हैं लेकिन वे सभी पुनर्निर्देशन की पारदर्शिता खो रहे हैं।

मेरे मामले में, www.example.com पर जाकर मैं उपनिर्देशिका / स्टोर पर रीडायरेक्ट करना चाहता था लेकिन यूआरएल को www.example.com/store पर अपडेट किए बिना। (मैं चाहता हूं कि पेज कोड फॉर्म निर्देशिका प्राप्त करें)। यदि यह आपका मामला है तो नीचे दिया गया समाधान पूरी तरह से काम करता है।

RewriteEngine on
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /store/$1 [L]

स्रोत: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory



आप बस इस कोड को अपनी .htaccess फ़ाइल में जोड़ें

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /folder/index.php [L]
</IfModule>

आप एक पुनर्लेखन नियम का उपयोग कर सकते हैं जो रूट का प्रतिनिधित्व करने के लिए ^ $ का उपयोग करता है और इसे आपके / स्टोर निर्देशिका में फिर से लिखता है, जैसे:

RewriteEngine On
RewriteRule ^$ /store [L]

मुझे लगता है कि आपके द्वारा पोस्ट किए गए कोड के साथ मुख्य समस्याएं हैं:

  • पहली पंक्ति सख्ती से sample.com से शुरू होने वाले मेजबान से मेल खाती है, इसलिए www.sample.com मेल नहीं खाता है।

  • दूसरी पंक्ति कम से कम एक चरित्र चाहता है, उसके बाद www.sample.com जो मेल नहीं खाता (आप पहले डब्ल्यू से क्यों बच गए?)

  • आपके नियम में निर्दिष्ट यूआरएल में शामिल नियमों में से कोई भी नहीं (साथ ही, नमूना नमूना के रूप में गलत वर्तनी है, लेकिन यह अप्रासंगिक है)।

संदर्भ के लिए, वर्तमान में आपके पास मौजूद कोड है:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^sample.com$
RewriteRule (.*) http://www.sample.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(.+)\www.sample\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]

एक और विकल्प यदि आप यूआरएल को फिर से लिखना चाहते हैं और मूल यूआरएल छुपाएं:

RewriteEngine on
RewriteRule ^(.*)$ /store/$1 [L]

इसके साथ, यदि आप उदाहरण के लिए http://www.example.com/product.php?id=4 टाइप करते हैं, तो यह फ़ाइल को http://www.example.com/store/product.php?id=4 पर पारदर्शी रूप से खोल देगा http://www.example.com/store/product.php?id=4 लेकिन उपयोगकर्ता को पूर्ण यूआरएल दिखाए बिना।


यहां एक उपनिर्देशिका पर रीडायरेक्ट करने के लिए उपयोग किया गया है। यह अदृश्य रूप से किया गया था और अभी भी उन अनुरोधों के माध्यम से अनुमति देता है जो किसी मौजूदा फ़ाइल या जो कुछ भी मेल खाते हैं।

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdir/$1
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteRule ^(/)?$ subdir/index.php [L]

अपने मूल्यों के साथ site.com और subdir बदलें।


मुझे आश्चर्य हुआ कि किसी ने इसका उल्लेख नहीं किया है:

RedirectMatch ^/$ /store/

असल में, यह रूट और केवल रूट यूआरएल को रीडायरेक्ट करता है। उत्तर इस लिंक से निकला


थोड़ा गुगल, मुझे ये परिणाम देता है:

रिवाइटइंजिन ऑन
रिवाइटबेस /
रिवाइट्रूल ^ इंडेक्स। (। *)? $ http://domain.com/subfolder/ [r = 301]

यह आपके सबफ़ोल्डर को index.something नामक फ़ाइल तक पहुंचने के किसी भी प्रयास को पुनर्निर्देशित करेगा, चाहे फ़ाइल मौजूद है या नहीं।

या इसे आजमाएं:

रिवाइटकंड% {HTTP_HOST}! ^ Www.sample.com $ [एनसी]
रिवाइट्रूल ^ (। *) $% {HTTP_HOST} / samlse / $ 1 [आर = 301, एल]

मैंने .htaccess फ़ाइल में बहुत अधिक रीडायरेक्ट नहीं किया है, इसलिए मुझे यकीन नहीं है कि यह काम करेगा या नहीं।


मैंने पाया है कि परिपत्र पुनर्निर्देशन से बचने के लिए, रूट निर्देशिका में पुनर्निर्देशन के दायरे को सीमित करना महत्वपूर्ण है। मैंने इस्तेमाल किया होगा:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]