2011-04-20 10 views
65

से एचटीएमएल को कैसे हटाएं। क्या आपको कोई विचार है कि एक स्थिर पृष्ठ के यूआरएल से .html को कैसे हटाया जाए। साथ ही, मुझे बिना किसी यूआरएल को .html के साथ रीडायरेक्ट करने की आवश्यकता है (यानी www.example.com/page.html www.example.com/page पर)।यूआरएल

+0

शायद regexp के साथ? –

+0

".html को हटाएं" से, क्या आपका मतलब है "एचटीएमएल मौजूद होना आवश्यक नहीं है"? –

+0

@Tomalak: हां और बिना किसी के ".html" के साथ यूआरएल को रीडायरेक्ट करें। मेरी समस्या यह है कि यह अनंत पुनर्निर्देशन के परिणामस्वरूप होता है। मेरा वर्तमान सेटअप www.example.com/page.html और www.example.com/page को दोनों सुलभ होने की अनुमति देता है जो एसईओ अनुकूल नहीं है। – Dave

उत्तर

10

आपके उत्तरों के लिए धन्यवाद। मैंने पहले ही अपनी समस्या हल कर ली है। मान लीजिए मेरे पास http://www.yoursite.com/html के तहत मेरे पृष्ठ हैं, निम्नलिखित .htaccess नियम लागू होते हैं।

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*).html\ HTTP/ 
    RewriteRule .* http://localhost/html/%1 [R=301,L] 

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*)\ HTTP/ 
    RewriteRule .* %1.html [L] 
</IfModule> 
59

अपाचे के तहत .htaccess के साथ आप इस तरह रीडायरेक्ट कर सकते हैं:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

यूआरएल से .html के दूर करने के लिए के रूप में, बस .html

<a href="http://www.example.com/page">page</a> 
+16

यह मेरे लिए कुछ भी नहीं करता है। क्या कोई कारण है कि यह काम नहीं करेगा? –

0
RewriteRule /(.+)(\.html)$ /$1 [R=301,L] 
बिना पृष्ठ से लिंक

इसे आजमाएं :) यह नहीं पता कि यह काम करता है या नहीं।

6

मैं अपने यूआरएल साइट से .html extantion दूर करने के लिए इस .htacess उपयोग करते हैं, तो कृपया सत्यापित करें कि यह सही कोड है:

RewriteEngine on 
RewriteBase/
RewriteCond %{http://www.proofers.co.uk/new} !(\.[^./]+)$ 
RewriteCond %{REQUEST_fileNAME} !-d 
RewriteCond %{REQUEST_fileNAME} !-f 
RewriteRule (.*) /$1.html [L] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP 
RewriteRule ^([^.]+)\.html$ http://www.proofers.co.uk/new/$1 [R=301,L] 
+0

यह मेरे लिए काम करता प्रतीत होता है, यहां प्रस्तुत अन्य समाधानों के विपरीत, धन्यवाद। हालांकि मैं जोड़ूंगा कि आपको अभी भी अपने एचटीएमएल में लिंक को अपडेट करना होगा (इसलिए यदि आप मूल रूप से 0 एच 32 फाइल को के रूप में लिंक कर रहे हैं, तो आपको इसे के रूप में अपडेट करना चाहिए और फिर यह काम करेगा।) – Lorenzo

+0

पर काम किया स्थानीय होस्ट। – Jayo2k

+0

मेरे लिए मूल परिवर्तन 'रिवाइटबेस /' बिट था। दुर्भाग्यवश मुझे समझ में नहीं आया कि यह क्यों काम करता है, लेकिन मुझे लगता है कि मैं जल्द ही सीखूंगा। –

51

यह आप के लिए काम करना चाहिए:

#example.com/page will display the contents of example.com/page.html 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.+)$ $1.html [L,QSA] 

#301 from example.com/page.html to example.com/page 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/ 
RewriteRule ^(.*)\.html$ /$1 [R=301,L] 
+2

मुझे इस कोड के साथ गोडाडी में 404 मिल रहा था और मैंने इसे डालने के लिए तय किया: विकल्प + FollowSymLinks -MultiViews -Indexes बहुत ऊपर। – Labanino

+1

और यह काम किया .. बहुत बढ़िया। –

+0

यह मेरे लिए काम कर रहा है ... thnx –

12

आप यह सुनिश्चित करने की आवश्यकता होगी कि आपके पास Options -MultiViews भी है।

उपरोक्त में से कोई भी मानक सीपीनल होस्ट पर मेरे लिए काम नहीं करता है।

यह काम किया:

Options -MultiViews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 
43

मुझे लगता है कि जॉन के जवाब में से कुछ स्पष्टीकरण रचनात्मक होगा। निम्नलिखित:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

जांच करता है कि यदि निर्दिष्ट फ़ाइल या निर्देशिका क्रमशः मौजूद नहीं है, तो पुनर्लेखन नियम आय:

RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

लेकिन क्या मतलब है? यह regex (regular expressions) का उपयोग करता है। यह एक छोटा सा कुछ मैंने पहले बनाया ... enter image description here

मुझे लगता है कि कि सही है।

नोट: अपने .htaccessका परीक्षण करते समय 301 रीडायरेक्ट का उपयोग न करें। समाप्त परीक्षण तक 302 का उपयोग करें, क्योंकि ब्राउज़र 301 को कैश करेगा। देखें https://stackoverflow.com/a/9204355/3217306

अद्यतन: मैं थोड़ा ग़लत थी, . मैचों नई-पंक्तियों को छोड़ कर सभी वर्ण, तो खाली स्थान के भी शामिल है।इसके अलावा, here is a helpful regex cheat sheet

सूत्रों का कहना है:

http://community.sitepoint.com/t/what-does-this-mean-rewritecond-request-filename-f-d/2034/2

https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules

+2

शानदार चित्र। –

+0

301s और ब्राउज़र कैश पर टिप मेरे मुद्दों को हल करती है। – Mark

+0

काफी जानकारीपूर्ण। – Muema

37

आपके URL से .html एक्सटेंशन को निकालने के लिए, आपको जड़/htaccess में निम्नलिखित कोड का उपयोग कर सकते हैं:

RewriteEngine on 


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

RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule^%{REQUEST_URI}.html [NC,L] 

नोट: यदि आप किसी अन्य एक्सटेंशन को हटाना चाहते हैं, उदाहरण के लिए .php एक्सटेंशन को निकालने के लिए, बस replac उपरोक्त कोड में एचटीएमएल हर जगह php के साथ।

+6

कोई अन्य जवाब मेरे लिए काम नहीं करता है, लेकिन यह एक किया, बहुत बहुत धन्यवाद! –

+1

यह मेरे लिए काम करता है :) – Javid

+1

यह भी मेरे लिए काम करता है। धन्यवाद @ स्टार्किन। एक^वोट है। – JeremyS