2011-09-21 19 views
10

जोड़ने मैं .htaccess साथ अपनी साइट पते के लिए www मजबूर करने के लिए कोशिश कर रहा हूँ। यह http://www.mysite.com/index.php बन जाता है।mod_rewrite www

लेकिन अगर मैं mysite.com/subpage खोलता हूं तो मैंने के बजाय http://www.mysite.com/index.php पर फिर से रीडायरेक्ट किया।

लेकिन अगर मैं http://www.mysite.com/subpage खोलता हूं तो मुझे रीडायरेक्ट नहीं मिलता है (जो अपेक्षित व्यवहार है)।

मैं इसे कैसे ठीक कर सकता हूं? मैं अपने साइट पर सभी अनुरोधों को www सबडोमेन पर पुनर्निर्देशित करना चाहता हूं।

उत्तर

12

समस्या यहीं है:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

^ स्ट्रिंग की शुरुआत निर्दिष्ट करता है, जबकि $ अंत निर्दिष्ट करता है।

इसे काम करने के लिए आपको .com या .+ के बाद वाइल्डकार्ड का चयन करने की आवश्यकता है।

दोहराना के लिए क्या एलेक्स ने कहा:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
17
शानदार HTML5 Boilerplate .htaccess से

:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
6

वास्तव में, मैं श्री Szanto से सहमत नहीं है।

यह समस्या प्रकट होता के साथ नहीं था:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

मैंने पाया (गूगल) के माध्यम से कुछ अतिरिक्त अनुसंधान कि यह मेरे लिए महान काम किया के माध्यम से:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 

श्री Szanto का जवाब, जबकि अच्छी तरह से स्वरूपित, 'www' संलग्न होने वाले सभी अनुरोधों को पुनर्निर्देशित करने के लिए प्रतीत होता है। यह अधिकांश सबडोमेन के साथ एक वांछनीय परिणाम नहीं था। उपरोक्त कोड केवल तभी पुनर्निर्देशित करता है जब कोई 'www' नहीं है और टीएल डोमेन नाम से पहले कोई सबडोमेन नहीं है।

आशा है कि इससे दूसरों की मदद मिलेगी।

+0

मुझे सबसे ऊपर जवाब पसंद आया - सब-डोमेन का उपयोग करने वाले किसी भी व्यक्ति को अनिवार्य रूप से www (और गलत तरीके से) संलग्न नहीं करना चाहिए। – Debriter

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