ইউআরএল থেকে .html কীভাবে সরাবেন?


112

.htmlস্থির পৃষ্ঠার ইউআরএল থেকে কীভাবে সরিয়ে নেওয়া যায়?

এছাড়াও, আমার যে কোনও ইউআরএলটি .htmlছাড়া এটির সাথে পুনঃনির্দেশ করা দরকার । (অর্থাত www.example.com/page.htmlকরতে www.example.com/page)।


1
".Html" অপসারণ করে আপনি কি বোঝাতে চান "উপস্থিত থাকার জন্য .html প্রয়োজন নেই"?
অরবিট

@ তোমালাক: হ্যাঁ এবং ".html" এর সাথে urlগুলিও এগুলি ছাড়া পুনর্নির্দেশ করুন। আমার সমস্যা হ'ল এটি অনন্ত পুনঃনির্দেশের ফলাফল to আমার বর্তমান সেটআপটি www.example.com/page.html এবং www.example.com/page উভয়ই অ্যাক্সেসযোগ্য হতে পারে যা এসইও বান্ধব নয়।
ডেভ


@ তোমালাক: টিপসটির জন্য ধন্যবাদ। মোড_উরাইটের ডকুমেন্টেশনগুলি পড়া খুব সহায়ক ছিল।
ডেভ

উত্তর:


105

আমি মনে করি জনের জবাবের কিছু ব্যাখ্যা গঠনমূলক হবে। পরবর্তী:

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

যথাযথভাবে নির্দিষ্ট ফাইল বা ডিরেক্টরি উপস্থিত না থাকলে যাচাই করে তা পুনরায় লেখার নিয়মটি এগিয়ে যায়:

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

তবে তার মানে কী? এটি রেগেক্স (নিয়মিত এক্সপ্রেশন) ব্যবহার করে । এখানে আমি আগে কিছুটা তৈরি করেছি ... এখানে চিত্র বর্ণনা লিখুন

আমি মনে করি এটি সঠিক।

দ্রষ্টব্য: পরীক্ষার সময় আপনার 301 পুনর্নির্দেশগুলি ব্যবহার .htaccess করবেন না । ব্রাউজারটি 301s ক্যাশে করবে বলে পরীক্ষা শেষ না হওয়া পর্যন্ত 302 ব্যবহার করুন। Https://stackoverflow.com/a/9204355/3217306 দেখুন

আপডেট: আমি কিছুটা ভুল হয়ে গিয়েছিলাম, .নিউলাইনগুলি বাদে সমস্ত চরিত্রের সাথে মেলে, তাই হোয়াইটস্পেস অন্তর্ভুক্ত। এছাড়াও, এখানে একটি সহায়ক রেগেক্স চিট শীট রয়েছে

সূত্র:

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

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


6
উত্তরটি ব্যাখ্যা করতে সহায়তা করতে চমত্কার ডায়াগ্রাম।
রিক

301s এবং ব্রাউজার ক্যাশে টিপটি হ'ল যা আমার সমস্যাগুলি সমাধান করেছে।
bgfvdu3w

@ ননকসএক্স আমি আর ওয়েবমাস্টার নই এবং সাহায্য করতে পারার মতো অবস্থানে নেই
বাইনারিফ্যান্ট

84

আপনার ইউআরএল থেকে .html এক্সটেনশানটি সরাতে, আপনি নীচের কোডটি root / 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 এক্সটেনশানটি সরাতে, কেবল উপরের কোডের পিএইচপি দিয়ে সর্বত্র এইচটিএমএল প্রতিস্থাপন করুন ।


10
অন্য উত্তরগুলির কোনওটিই আমার পক্ষে কাজ করেনি, তবে এইটি করেছেন, অনেক ধন্যবাদ!
এমমেট

2
এই আমার জন্য কাজ করেছে। ধন্যবাদ @ স্টারকিন একটি ভোট আছে।
জেরেমিস

2
পুরোপুরি সূক্ষ্ম কাজ। ধন্যবাদ!
ixany

এটি আমার জন্য ফাইলের সম্প্রসারণ সরিয়ে দেয় তবে সেই পৃষ্ঠায় পুনর্নির্দেশ করে না
ভড়গব ভেঙ্কটেশ

74

অ্যাপাচে অধীনে .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>

23
এটি আমার জন্য কিছু করে না। এটি কাজ করবে না কোন কারণ আছে?
মাইকেল ইয়াওওয়ারস্কি

অনুরোধ করা লিঙ্কটির জন্য আপনার কাছে একটি আসল ফাইল আছে? যে আরম্ভ হবে!-f
Martijn

72

এটি আপনার পক্ষে কাজ করা উচিত:

#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]

3
এই কোডটি সহ আমি গডাড্ডিতে 404 পাচ্ছিলাম এবং আমি এটি স্থাপন করা ঠিক করেছি: অপশন + ফলোসিমলিংকস-মাল্টিভিউস-সূচকগুলি একেবারে শীর্ষে।
লাবানিনো

1
আমি মনে করি এটি সেরা এবং সবচেয়ে সম্পূর্ণ উত্তর, ধন্যবাদ!
ctekk

আমি লোকালহোস্টে এটি করার চেষ্টা করেছি, তবে এটি কাজ করছে না, আমার অন্য কোনও কাজ করার দরকার আছে কি, আমাকে .htaccess ফাইলটি লিঙ্ক করতে হবে, বা পৃষ্ঠাটি কীভাবে এটি সনাক্ত করবে?
পিয়ানোবাদী প্রোগ্রামার

আমি কীভাবে .fp এক্সটেনশনটিকে # 301- তে উদাহরণ / পেজ html থেকে উদাহরণ / পৃষ্ঠায় যুক্ত করব, এটা কি সম্ভব?

20

আপনার কাছে নিশ্চিত হওয়া দরকার Options -MultiViews

উপরের কোনওটিই আমার জন্য একটি স্ট্যান্ডার্ড সিপ্যানেল হোস্টে কাজ করেনি।

এটি কাজ করেছে:

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

উপরের সমস্ত উত্তরের মধ্যে একটি শেষ পর্যন্ত কাজ করেছে .. আমি বিশ্বাস করি কারণ আমার সাইটটি সিপ্যানেলের সাহায্যে গডাড্ডিতে হোস্ট করা আছে। কীটি হ'ল অপশনস-মাল্টিভিউগুলি
ব্র্যাড

হ্যাঁ, এই বিভাগে কিছুই উত্তর উত্তর আশা করে না! তুমি দিন বাঁচিয়েছ!
নিল বানেট

ধন্যবাদ বন্ধু. আমি নিশ্চিত নই অন্যরা কেন আশানুরূপ কাজ করল না।
নানু

13

আপনার জবাবের জন্য ধন্যবাদ। আমি ইতিমধ্যে আমার সমস্যা সমাধান করেছি। ধরুন আমার কাছে 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>

6

আমি আমার ইউআরএল সাইট থেকে .html এক্সটেনশন অপসারণের জন্য এই .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]

এটি এখানে উপস্থাপিত অন্যান্য সমাধানগুলির মত নয়, আমার পক্ষে কাজ করে বলে মনে হচ্ছে আপনাকে ধন্যবাদ। আমি যোগ করব যদিও আপনাকে এখনও আপনার এইচটিএমএলে লিঙ্ক (গুলি) আপডেট করতে হবে (সুতরাং যদি আপনি মূলত আপনার .html ফাইলে <a href="page1.html "> </a> হিসাবে যুক্ত হন তবে আপনাকে আপডেট করা উচিত এটি <a href=" উদাহরণ.com/page1"> </ a > হিসাবে এবং তারপরে এটি কাজ করবে))
লোরেনজো

আমার জন্য মূল পরিবর্তনটি RewriteBase /কিছুটা ছিল । দুর্ভাগ্যক্রমে আমি বুঝতে পারছি না কেন এটি কাজ করেছিল তবে আমি অনুমান করি শিগগিরই শিখব।
কেনো ক্লেটন

4

যারা ফায়ারবেস হোস্টিং ব্যবহার করছেন তাদের কোনও উত্তর এই পৃষ্ঠায় কাজ করবে না। কারণ আপনি .htaccessফায়ারবেস হোস্টিংয়ে ব্যবহার করতে পারবেন না । আপনাকে ফায়ারবেস.জসন ফাইলটি কনফিগার করতে হবে। "cleanUrls": trueআপনার ফাইলটিতে কেবল লাইন যুক্ত করুন এবং এটি সংরক্ষণ করুন। এটাই.

লাইন যোগ করার পরে ফায়ারবেস.জসনটি এর মতো দেখতে পাবেন:

{
  "hosting": {
    "public": "public",
    "cleanUrls": true, 
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}

2

আপনার ইউআরএল থেকে .html এক্সটেনশানটি সরাতে, আপনি নীচের কোডটি root / htaccess এ ব্যবহার করতে পারেন:

#mode_rerwrite start here

RewriteEngine On

# does not apply to existing directores, meaning that if the folder exists on server then don't change anything and don't run the rule.

RewriteCond %{REQUEST_FILENAME} !-d

#Check for file in directory with .html extension 

RewriteCond %{REQUEST_FILENAME}\.html !-f

#Here we actually show the page that has .html extension

RewriteRule ^(.*)$ $1.html [NC,L]

ধন্যবাদ


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

এটি চেষ্টা করুন :) এটি কাজ করে কিনা জানেন না।


4
আপনি যদি নিশ্চিত না হন যে এটি কাজ করে বা না করে তবে আপনাকে উত্তর হিসাবে পোস্ট করা উচিত নয়।
এটি কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.