2012-04-20 12 views
7

हमारे पास एक वेबसाइट है, दुर्भाग्यवश सभी यूआरएल में .html प्रत्यय है, इसकी एक Magento स्थापना है, Magento आपको इसे सीएमएस पर बदलने की अनुमति देता है, लेकिन फिर, दुर्भाग्य से यह सभी यूआरएल .html प्रत्यय के साथ Google में एक अच्छी रैंकिंग है। हमें गैर .html पर रीडायरेक्ट करने की आवश्यकता है।रीडायरेक्ट के साथ यूआरएल से .html हटाएं

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

  • अब है: www.example.de/cool-shoes.html
  • होगा: www.example.de/cool-shoes

तो www.example.de/cool-shoes.html अब मौजूद नहीं होगा, और मैं .htaccess कोई भाग्य के साथ साथ एक रीडायरेक्ट की कोशिश कर रहा हूँ।

मैं अब तक की कोशिश की है:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/ 
RewriteRule (.*)index\.html$ /$1 [R=301,L] 

और:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 

लेकिन यह नहीं लगता है काम करने के लिए ... किसी भी विचार?

RewriteEngine On 
RewriteRule ^(\w+)\.html$ /$1 [R=301,L] 

उत्तर

8

ठीक है तो, कुछ शोध के बाद, और रीराइट नियम के साथ इस लक्ष्य को हासिल करने में नाकाम रहने, कोड की निम्न पंक्ति काम किया:

redirectMatch 301 ^(.*)\.html $1 

यह किसी भी यूआरएल एक्सटेंशन को निकालने और टूटी कड़ियों से बचने के लिए उम्मीद है कि करने के लिए काफी उपयोगी है भविष्य में किसी की मदद करता है ...

चीयर्स!

+0

हैलो, बस मेरे संदेह को दूर करने के लिए, यह नियम क्या कर रहा है? यह नहीं माना जाता है कि पहला पैरामीटर अभिव्यक्ति से प्राप्त अभिव्यक्ति है और दूसरा जिसे आप अपाचे में भेज देंगे? उन्हें स्विच किया जाना चाहिए ->^(। *) $ 1.html – alexserver

+0

वह नियम '.html' को हटा रहा है। पहला भाग यह है कि यह मेल खाता है: कोई यूआरएल जिसमें '.html' है। '$ 1' मिलान के संश्लेषण में क्या है: '.html' को छोड़कर सबकुछ। –

+0

मैं यूआरएल के अंत में '.html' आने के लिए' '' 'जोड़ूंगा:' redirectMatch 301^(। *) \। Html $ $ 1' –

1

इस चाल करना चाहिए।

+0

धन्यवाद, लेकिन कुछ भी नहीं बदल रहा है, मुझे पता है कि मैं सिर्फ Magento सीएमएस पर उपसर्ग को हटा सकता हूं, लेकिन अलविदा Google रैंकिंग ... "w +" के लिए क्या है? क्या मुझे [आर = 301, एनसी] या कुछ उपयोग करना चाहिए? –

+0

वैसे यह क्या करता है यह एचटीएमएल (\ w + अल्फान्यूमेरिक वर्णों के किसी भी गैर-शून्य तारों से मेल खाता है) के साथ समाप्त होने वाला कोई अनुरोध लेता है और यह इसे उसी पते पर रीडायरेक्ट करता है लेकिन .html के बिना। मुझे लगता है कि आप कुछ और चाहते हैं, और विकास समाधान एक साफ एक जैसा दिखता है –

+0

धन्यवाद दोस्त, मुझे लगता है कि आप सही तरीके से जा रहे हैं, विकास समाधान अच्छा है, लेकिन जैसा कि मैंने ऊपर बताया है, केवल उन मामलों के लिए जहां यूआरएल मौजूद है, इस मामले में यह यूआरएल (। एचटीएमएल) हटा दिया जाएगा, और मैं चाहता हूं कि सभी को .html के बिना नए यूआरएल पर रीडायरेक्ट किया जाए। मैं मुख्य। Htaccess को संपादित करता हूं और सही जगह पर सुझाई गई रेखा को जोड़ता हूं, लेकिन कोई पुनर्निर्देशन नहीं किया जा रहा है, हो सकता है कि मैं इस लाइन को मुख्य magento स्थापना की मुख्य। Htacess फ़ाइल में जोड़कर गलत कर रहा हूं, बीमार बनाने की कोशिश करें इस दुकान के लिए एक अलग। htacess (मेरे पास एक multishop स्थापना है) धन्यवाद! –

1

steps पालन करें, और आप .htaccess फाइल को संशोधित किए बिना यूआरएल से .html दूर करने के लिए सक्षम हो जाएगा:

+0

धन्यवाद, वह वास्तविक काम करता है, केवल तभी जब आपके पृष्ठों में .html प्रत्यय था, लेकिन इस मामले में, .html के साथ यह पृष्ठ मौजूद नहीं है। यह पुरानी साइट पर मौजूद है, लेकिन नए में नहीं, इसलिए हर बार जब कोई पुराना उलर (www.mysite.de/thing.html) जाता है, तो उसे www.mysite.de/thing पर रीडायरेक्ट किया जाता है, इसके बजाय 404 नहीं मिल गया। मुझे लगता है कि यह htaccess के साथ हासिल किया जा सकता है, है ना? –

+0

केवल एक लिंक उच्च गुणवत्ता नहीं है। लिंक की गई सामग्री बदल सकती है या अनुपलब्ध हो सकती है। यह लोगों को उत्तर पर क्लिक करने के लिए उपयोगकर्ता के अनुकूल भी नहीं है। यहां कम से कम चरणों को सारांशित करना बेहतर होगा। –

0

अपनी .htaccess फाइल में डाल करने के लिए इस प्रयास करें स्थायी www.mysite.de/cool-shoes.html पुन: निर्देशित www.mysite.de/cool-shoes यह आप

8

इस इच्छा के सहायक हो सकता है >http://example.com/page

# Remove .html from url 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 
+0

यह कोड '.html' को हटाने के लिए प्रतीत होता है यह। यह एक पुनर्लेखन नियम भी प्रतीत होता है, रीडायरेक्ट नियम नहीं। किसी भी रीडायरेक्टिंग के अंत में इसे '[आर = 301, एल]' की आवश्यकता होगी। –

2

कोशिश जोड़ने आपकी साइट के रूट निर्देशिका में .htaccess फाइल करने के लिए निम्न .html एक्सटेंशन के साथ रीडायरेक्ट uRL और इसे हटाने - तो http://example.com/page.html तरह uRL रीराइट।

Options +FollowSymLinks -MultiViews 
DirectorySlash Off 

RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME}/ -d 
RewriteCond %{SCRIPT_FILENAME}.html !-f 
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L] 

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteRule ^(.+)\.html$ /$1 [R=301,L] 

RewriteCond %{SCRIPT_FILENAME}.html -f 
RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L] 
1

यहां समाधान है जो मेरे लिए काम करता है।

RewriteCond %{THE_REQUEST} \.html [NC] 
    RewriteRule ^(.*)\.html$ /$1 [R=301,L] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME}\.html -f 
    RewriteRule ^(.*)$ $1.html [L] 
+0

ये नियम तब उचित दिखते हैं जब आपके सर्वर में वास्तव में '.html' में समाप्त होने वाली फ़ाइलें होती हैं लेकिन आप URL में' .html' दिखाना नहीं चाहते हैं। –

0

यह .html /product/raspberrypi.html --->/उत्पाद/रास्पबेरी पाई/(/product/raspberrypi/index.php) के साथ समाप्त index.php छिपा हुआ है यूआरएल के लिए है। इसे समझने के लिए मुझे थोड़ी देर लग गई। जबरदस्त हंसी...

RewriteEngine On 
RewriteBase/

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

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

आप REQUEST_URI 'का उपयोग करें और रीडायरेक्ट नियमों के बाद से यह आवेदन द्वारा ओवरराइड किया जा सकता है सूचकांक से पहले इसे जोड़ने के लिए है। यह जानना महत्वपूर्ण है कि इसका यूआरआई एक फ़ाइल नाम या निर्देशिका नहीं है जिसे हम रीडायरेक्ट करने का प्रयास कर रहे हैं, क्योंकि फ़ाइल नामों में रूट फ़ोल्डर्स (वर्डप्रेस) में index.php है।

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