क्या किसी निर्देशिका के उप डोमेन को फिर से लिखने के लिए .htaccess का उपयोग करना संभव है?
उदाहरण:
की सामग्री को दर्शाता है
क्या किसी निर्देशिका के उप डोमेन को फिर से लिखने के लिए .htaccess का उपयोग करना संभव है?
उदाहरण:
की सामग्री को दर्शाता है
जवाबों:
इसे अपने .htaccess फ़ाइल में डालने का प्रयास करें:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]
एक अधिक सामान्य नियम के लिए (जो किसी भी उप-डोमेन के साथ काम करता है, न कि सिर्फ sub
) इसके साथ अंतिम दो पंक्तियों को बदलें:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]
http://test.domain.com/subdomains/test/
, जब मैं केवल यह दिखाना चाहता हूंhttp://test.domain.com/
test.domain.com/subdomains/test
- शायद यहां कुछ और चल रहा है। क्या आप RewriteBase /
सही जोड़ सकते हैं RewriteEngine on
? इसके अलावा, यदि आप इसे दिखाना चाहते हैं तो आपको test.domain.com
mod_proxy और [P]
ध्वज का उपयोग करना होगा ।
मैं एक mod_rewrite विशेषज्ञ नहीं हूं, मैं अक्सर इसके साथ संघर्ष करता हूं, लेकिन मैंने अपनी साइटों में से एक पर यह किया है, इसे आपकी परिस्थितियों के आधार पर अन्य झंडे आदि की आवश्यकता हो सकती है। मैं इसका उपयोग कर रहा हूं:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]
साइट के बाकी हिस्सों के लिए कोई अन्य पुनर्लेखन नियम आपके उपडोमेन पुनर्लेखन के साथ हस्तक्षेप करने से रोकने के लिए बाद में जाना चाहिए।
.htaccess
है, जो इस पृष्ठ पर आता है (जैसे मैंने किया), इसके अलावा वास्तविक .htaccess
फ़ाइल बनाने के लिए, इसे प्रभावी बनाने के लिए, आपको AllowOverride
अपनी VirtualHost
सेटिंग्स में सेट करने की आवश्यकता है ( stackoverflow.com/a/22819550/1657502 ) , अपाचे के rewrite
मॉड्यूल को सक्षम करें और फिर अपाचे को पुनः आरंभ करें ( stackoverflow.com/a/5758551/1657502 )
www.
उपसर्ग शायद फिर से लिखने वाले की तुलना में पुनर्निर्देशन के माध्यम से सर्वोत्तम रूप से समर्थित है।
आप एक उप-फ़ोल्डर में एक उपडोमेन को फिर से लिखने के लिए .htaccess में निम्नलिखित नियम का उपयोग कर सकते हैं :
RewriteEngine On
# If the host is "sub.domain.com"
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
# Then rewrite any request to /folder
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
लाइन-बाय-लाइन स्पष्टीकरण:
RewriteEngine on
ऊपर की लाइन सर्वर को यूआरएल को फिर से लिखने के लिए इंजन चालू करने के लिए कहती है।
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
यह पंक्ति उस रीट्राइट के लिए एक शर्त है, जहां हम रेगेक्स पैटर्न का उपयोग करके HTTP होस्ट के खिलाफ मैच करते हैं। शर्त कहती है कि यदि होस्ट sub.domain.com है, तो नियम को निष्पादित करें।
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
नियम http://sub.domain.com/foo से मेल खाता है और आंतरिक रूप से इसे http://sub.domain.com/folder/foo पर पुनर्निर्देशित करता है ।
अपने उपडोमेन और फोल्डर के साथ उप.डोमेन.कॉम को उस फोल्डर के नाम से बदलें जिसे आप अपने उपडोमेन को इंगित करना चाहते हैं।
मेरे पास एक ही समस्या थी, और मुझे इसमें विस्तृत विवरण मिला http://www.webmasterworld.com/apache/3163397.htm
मेरा समाधान (सबडोमेनस सामग्री नामक एक फ़ोल्डर में होनी चाहिए sd_subdomain
:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} subdomain\.domain\.com
RewriteCond $1 !^sd_
RewriteRule (.*) /sd_subdomain/$1 [L]
यह उप फ़ोल्डर में एक ही फ़ोल्डर में रीडायरेक्ट करता है:
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1
इस .htaccess फ़ाइल को उपडोमेन फ़ोल्डर में डालने का प्रयास करें:
RewriteEngine On
RewriteRule ^(.*)?$ ./subdomains/sub/$1
यह http://domain.com/subdomains/sub/ पर पुनर्निर्देशित करता है , जब आप केवल इसे http://sub.domain.com/ दिखाना चाहते हैं
अनुप्रेषित उपडोमेन निर्देशिका:
RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC]
RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301]
किसी भी उप डोमेन अनुरोध के लिए, इसका उपयोग करें:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.band\.s\.co
RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.co
RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+)
RewriteRule ^(.*)$ /%1/$1 [L]
बस कुछ फ़ोल्डर को उप डोमेन नाम की आवश्यकता के समान बनाएं। फ़ोल्डर इस तरह मौजूद होना चाहिए: domain.com/sub for sub.domain.com ।
http://test.domain.com
, तो URL मुझे पुनर्निर्देशित करता हैhttp://test.domain.com/subdomains/test/
। क्या/subdomains/test/
अंत में दिखाए बिना यह संभव है ?