2010-12-10 4 views
5

मैं mod_rewrite के साथ अपने htaccess फ़ाइल उपयोग कर रहा हूँ इस तरह स्वच्छ यूआरएल बनाने के लिए स्वच्छ यूआरएल साथ www मजबूर:इनको स्लेश अनुगामी जोड़ सकते हैं और

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

मैं भी 'www' के लिए साइट के लिए मजबूर करना चाहते हैं यूआरएल में एक नहीं होने पर सबडोमेन और सबसे अधिक आयात से एक पीछे की स्लैश जोड़ें।

मैं mod_rewrite के साथ एक पूर्ण नोब हूं और मैंने Google पर पाया गया अन्य कोड (उदास मुझे पता है) के संयोजन से इसे अपने आप पूरा करने का प्रयास किया है, लेकिन मैं हमेशा 500 त्रुटि के साथ समाप्त होता हूं।

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteCond %{HTTP_HOST} ^www\.domain\.tld$ [NC] 
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L] 
</IfModule> 

आपकी मदद के लिए धन्यवाद:

यहाँ कोड मैं बल www के लिए मिला है।

+0

उनमें से या तो अकेले काम करते हैं? पता लगाएं कि नियमों का कौन सा सेट इसे तोड़ रहा है। – profitphp

+0

मुझे पहले एक काम पता है, और मुझे लगता है कि दूसरा भी करता है। मुझे यकीन नहीं है कि मैं जो परिणाम चाहता हूं उसे प्राप्त करने के लिए इसे कैसे जोड़ूं। – imns

उत्तर

11

www और पीछे की स्लैश जांच को अलग करने का प्रयास करें। यह परीक्षण किया जाता है और उम्मीद है कि आप के लिए काम कर रहे हैं। आपने यह नहीं कहा कि क्या आप डोमेन रूट पर या उपनिर्देशिका में रख रहे हैं - आमतौर पर htaccess के साथ मदद मांगते समय अच्छी जानकारी।

RewriteEngine On 

# Assuming you're running at domain root. Change to working directory if needed. 
RewriteBase/

# 
# www check 
# If you're running in a subdirectory, then you'll need to add that in 
# to the redirected url (http://www.mydomain.com/subdirectory/$1 

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

# 
# Trailing slash check 

# Don't fix direct file links 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 

# 
# Finally, forward everything to your front-controller 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [QSA,L] 

डीबग करने के लिए, अलग-अलग अनुभागों पर टिप्पणी करें और देखें कि क्या/काम नहीं कर रहा है।

+1

क्या यह उत्तर सही था? मैं खुद को पूरा करने की कोशिश कर रहा हूं (* पूर्ववत 'www' * को छोड़कर) मुझे यह जवाब काम पर नहीं मिल सकता है। – Dan

+0

इसी तरह मैं इस कोड को – DaveO

+0

काम करने के लिए नहीं मिल सकता है और यह अभी भी मेरे लिए ठीक काम करता है। वास्तव में क्या काम नहीं कर रहा है? पिछला स्लैश, index.php के लिए आगे, या www? – Leniency

1

उपयोग इस और अपनी समस्याओं को भूल गया;)

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] 
RewriteRule ^(.*?)/*$ http://%1/$1/ [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://your-domain.ru/$1/ [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 
</IfModule>