অ-www কে। Htaccess এ পুনঃনির্দেশ করুন


189

আমার .htaccess ফাইলটিতে এটি রয়েছে:

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

তবে যখনই আমি আমার রুটে কোনও ফাইল অ্যাক্সেস করি http://example.com/robots.txtতা এটিকে পুনর্নির্দেশ করবে http://www.example.comrobots.txt/

আমি কীভাবে এটি সংশোধন করতে পারি যাতে এটি সঠিকভাবে পুনঃনির্দেশিত হয় http://www.example.com/robots.txt?

উত্তর:


389

এটিতে আপনার কনফিগারেশনটি পরিবর্তন করুন (একটি স্ল্যাশ যোগ করুন):

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

বা নীচে বর্ণিত সমাধান ( @ অ্যাবসিডিক লাইভ দ্বারা প্রস্তাবিত ) যে কোনও ডোমেনের জন্য কাজ করবে:

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

আপনার যদি প্রয়োজন হয় HTTP এবং https সমর্থন করতে এবং প্রোটোকল পছন্দ সংরক্ষণের জন্য নিম্নলিখিত চেষ্টা করুন:

RewriteRule ^login\$ https://www.%{HTTP_HOST}/login [R=301,L]

আপনি কোথায় প্রতিস্থাপন loginসঙ্গে checkout.phpআপনার উপর HTTPS দ্বারা সমর্থন করতে হবে অথবা যাই হোক না কেন URL টি।

আমি তর্ক করব যদিও এটি একটি খারাপ ধারণা। যুক্তির জন্য দয়া করে এই উত্তরটি পড়ুন


কিছু পৃষ্ঠাগুলি (যেমন লগইন বা সাইন আপ) https প্রোটোকল ব্যবহার করার সময় এই সমাধানটি কার্যকর হয় না।
আলেক্সি কোসভ

কিছু তথ্য অন্তর্ভুক্ত করার জন্য আমি পোস্টটি সামান্য আপডেট করেছি। এটি সাধারণভাবে এবং সঠিকভাবে প্রোটোকলটি ব্যবহারের জন্য চয়ন করুন।
র্যান্ডল হান্ট

2
প্রথম সমাধানটি যথেষ্ট পরিমাণে পুনর্নির্দেশ করে না, ২ য় মনে হয় খুব বেশি পুনর্নির্দেশিত হয়েছে। উদাহরণস্বরূপ blog.example.comহয়ে যায়www.blog.example.com
gman

লোকালহোস্টে বিকাশ করার সময় কীভাবে পুনর্নির্দেশটি এড়ানো যায় তা আপনি কী দয়া করে যুক্ত করতে পারেন?
বুগ বানি 18

ive এখানে সবকিছু অনুসরণ করে চলেছে তবে কিছুই কাজ করছে না। আমি ল্যারাভেল সেটআপ ব্যবহার করছি। কারও কি ধারণা আছে কেন এটি আমার পক্ষে কাজ করছে না? www.domain.com এবং ডোমেইন.কম উভয়ই সঠিকভাবে লোড করে তবে ডোমেন ডটকম www.domain.com- এ পুনঃনির্দেশ দেয় না। এটি কি আমার ডিএনএস নিয়ে সমস্যা হতে পারে?
হ্যালো ওয়ার্ল্ড

92

এখানে সঠিক সমাধান যা https এবং HTTP সমর্থন করে:

# Redirect to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

7
এটি নিখুঁত, এটি wwwঅন্যান্য জেনেরিক সমাধানগুলির মতো করে সাবডোমেনগুলি পুনর্নির্দেশ করে না ।
ফ্যাবিয়ান শেমংলার

4
এটি একটি সেরা সমাধান, গৃহীত উত্তরের চেয়ে অনেক ভাল কাজ করে এবং এইচটিটিপিএস সঠিকভাবে যত্ন নেয়
তামিক সোজিভ

3
পুরোপুরি কাজ করে! আর এমন কয়েক লাইনে!
জেকডুড

7
এটি সেরা উত্তর
অ্যান্ড্রু

7
যদি আমার ভুল না হয় তবে এটি একাধিক বিন্দুর জন্য কাজ করবে না। উদাহরণস্বরূপ:yoursite.co.uk
ট্র্যাশইএমসিট্রাশ

82
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

এইচটিটিপিএসের জন্য

RewriteCond %{HTTPS}s ^on(s)|

RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]

7
আপনি যখন কোনও নতুন প্রকল্পের কোড প্রয়োগ করছেন বা আপনি যখন কোনও বিদ্যমান প্রকল্পে অতিরিক্ত-ডোমেনগুলি প্রয়োগ করেন তখন এই সমাধানটি @ রানম্যানের পক্ষে অগ্রাধিকার দেওয়া হয় কারণ এটি সমস্ত ডোমেনের জন্য কাজ করবে যাতে এইভাবে মানব ত্রুটি হ্রাস করা যায়।
ফ্রাঙ্কি

আমি এই সমাধানটি পছন্দ করি তবে এর ^(.*)$পরিবর্তে কেন (.*)?
পপনুডলস

এই সমাধানটি আরও ভাল তবে আমি নিজেরটি সম্পাদনা করার জন্য আমারও সম্পাদনা করেছি।
র‌্যান্ডাল হান্ট

1
এটি সমস্ত ডোমেনের পক্ষে কাজ করছে এটির সহজ এবং কার্যকর! আপনাকে ধন্যবাদ
eirenaios

আপনি RewritCond% {HTTPS} s ^ on (s) | এ অনুসরণ করতে পারেন পুনর্লিখন ^ এইচটিপি% 1: //www.% {HTTP_HOST} / $ 1 [আর = 301, এল]
অবিডিক্লিক

23

নিম্নলিখিত উদাহরণটি এসএসএল এবং নন-এসএসএল উভয় ক্ষেত্রেই কাজ করে এবং আপনি HTTP এবং https পরিচালনা করতে কেবল একটি নিয়ম ব্যবহার করার কারণে অনেক দ্রুত

RewriteEngine on


RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

[পরিক্ষিত]

এটি পুনর্নির্দেশ করবে

HTTP

প্রতি

HTTPS

প্রতি


1
আমি যেটা নিয়ে এসেছি তার খুব কাছে। এইচটিটিপি হোস্টেও একাধিক ডট সমর্থন করে, উদাহরণস্বরূপ "mysite.co.uk"।
আদাদামিয়ান

2
কৌতূহলের বাইরে, আপনি এখানে আর = 301 ব্যবহার করছেন না কেন? এটি কোনও কোড নির্দিষ্ট না থাকলে ডিফল্টরূপে 302 (সরানো টেম্প।) ব্যবহার করবে।
মার্চ

1
পুরোপুরি কাজ করে। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
জেমস নিসবেট

8

এটি ব্যবহার করে দেখুন, আমি এটি অনেক ওয়েবসাইটে ব্যবহার করেছি, এটি পুরোপুরি কার্যকর হয়

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^bewebdeveloper.com$
RewriteRule ^(.*) http://www.bewebdeveloper.com/$1  [QSA,L,R=301]

4

আমি উপরোক্ত সমস্ত সমাধানগুলি পরীক্ষা করেছি কিন্তু আমার জন্য কাজ করছি না, আমি চেষ্টা করেছি HTTP: // মুছে ফেলার চেষ্টা করেছি এবং পুনঃনির্দেশও করব না wwwটি এটি পুনঃনির্দেশকে ভালভাবে সরানো হয়েছে, তাই আমি বিভ্রান্ত হয়ে পড়ি, বিশেষত আমি https এর অধীনে আমার সমস্ত সাইট চালাচ্ছি : //

সুতরাং আমি কিছু কোড একসাথে একত্রিত করেছি এবং http: // এবং https: // এবং www এবং নন- www উভয়ের জন্য নিখুঁত সমাধান নিয়ে এসেছি।

# HTTPS forced
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# Redirect to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

আশা করি এটি কাউকে সহায়তা করতে পারে :)


3

.Htaccess ফাইলে নিম্নলিখিত কোড যুক্ত করুন।

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

ইউআরএলগুলি পুনর্নির্দেশ টিউটোরিয়ালটি এখান থেকে পাওয়া যাবে - .htaccess ফাইল ব্যবহার করে নন-www কে www এবং HTTP- তে HTTPS এ পুনঃনির্দেশ করুন


3

এই কনফিগারেশনটি SSL কনফিগার করে বিটনামি ওয়ার্ডপ্রেসে আমার জন্য কাজ করেছে:

ফাইল /opt/bitnami/apps/wordpress/conf/httpd-app.conf এ "রিরাইটইঙ্গাইন অন" এর নীচে নীচে যুক্ত করা হয়েছে

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

এটি আপনার ডোমেনটিকে পুনর্নির্দেশ করবে যা ডাব্লুডাব্লুডাব্লু দিয়ে শুরু হয় না এটি আপনার সমস্ত সাব ডোমেন পুনঃনির্দেশ করে না।

এটা কার্যকরী.


2

আমি বিশ্বাস করি যে শীর্ষস্থানীয় উত্তরটি সাফল্যের সাথে নন-www কে www- এ পুনঃনির্দেশ করেছে (উদা: mysite.com -> www.mysite.com ), তবে ওয়াইল্ডকার্ড সাবডোমেনগুলিকে বিবেচনায় নেই, যার ফলস্বরূপ:

random.mysite.com -> www.random.mysite.com

এইচটিটিপিএস সহ / ছাড়াই এখানে একটি সমাধান

HTTP- র

RewriteEngine On

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

HTTP- র / HTTPS দ্বারা

RewriteEngine On

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=protocol:https]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=protocol:http]

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

* দ্রষ্টব্য: আমি https পরীক্ষা করিনি কারণ আমার কাছে বর্তমানে পরীক্ষার জন্য কোনও সার্টি নেই, তবে কেউ যদি আমার যা যাচাই বা অপ্টিমাইজ করতে পারেন তবে তা দুর্দান্ত।


প্রথমটি এখানে কী করে: '^ (। *) $'
বৈশাল প্যাটেল

0

যদি সম্ভব হয় তবে এটিকে মূল অ্যাপাচি কনফিগারেশন ফাইলে যুক্ত করুন। এটি একটি হালকা ওজন সমাধান, কম প্রক্রিয়াজাতকরণ প্রয়োজন।

<VirtualHost 64.65.66.67>
        ServerName example.com
        Redirect permanent / http://www.example.com/
</VirtualHost>
<VirtualHost 64.65.66.67>
   ServerAdmin me@example.com
   ServerName www.example.com
   DocumentRoot /var/www/example
   .
   .
   . etc

সুতরাং, VirtualHost"উদাহরণ.com" এর জন্য পৃথক পৃথকভাবে এই অনুরোধগুলি ক্যাপচার করে এবং তারপরে স্থায়ীভাবে সেগুলি আপনার মূলগুলিতে পুনর্নির্দেশ করে VirtualHost। সুতরাং প্রতিটি অনুরোধের সাথে কোনও রেগেক্স পার্সিং নেই, এবং আপনার ক্লায়েন্ট ব্রাউজারগুলি পুনঃনির্দেশকে ক্যাশে করবে যাতে তারা সার্ভার লোডে আপনাকে সংরক্ষণ করে "ভুল" url আবার কখনও অনুরোধ করবে না।

মনে রাখবেন, যে চিহ্ন স্ল্যাশ Redirect permanent / http://www.example.com/। এটি ছাড়া, থেকে example.com/asdfপুনর্নির্দেশের http://www.example.comasdfপরিবর্তে পুনঃনির্দেশ হবে http://www.example.com/asdf


0

দুটি সতর্কতা

301 এড়িয়ে চলুন এবং আধুনিক 303 বা 307 প্রতিক্রিয়া স্থিতি কোডগুলি পছন্দ করুন।

301 এড়িয়ে চলুন

যদি আপনার সত্যিকারের স্থায়ী পুনঃনির্দেশের প্রয়োজন হয় তবে সাবধানতার সাথে ভাবুন [R=301]কারণ আপনি যদি পরে এটি পরিবর্তন করার সিদ্ধান্ত নেন তবে পৃষ্ঠার পূর্ববর্তী দর্শকরা পুনঃনির্দেশের পৃষ্ঠাটি দেখতে থাকবে।

স্থায়ী পুনঃনির্দেশের তথ্যগুলি প্রায়শই ব্রাউজারের ক্যাশে সংরক্ষণ করা হয় এবং সাধারণভাবে এটি মুছে ফেলা কঠিন (পৃষ্ঠাটি পুনরায় লোড করুন সমস্যার সমাধান করবেন না)। আপনার ওয়েবসাইটের দর্শকরা পূর্ববর্তী পুনঃনির্দেশ "চিরতরে" আটকে থাকবে।

302 এড়িয়ে চলুন

HTTP প্রোটোকলের নতুন সংস্করণ (v1.1) দুটি নতুন প্রতিক্রিয়া স্থিতি কোড যুক্ত করেছে যা 302 এর পরিবর্তে ব্যবহার করা যেতে পারে।

  • 303 ইউআরএল পুনঃনির্দেশ কিন্তু জিইটি-তে অনুরোধের ধরণটি পরিবর্তন করার দাবি করছে।
  • 307 ইউআরএল পুনঃনির্দেশনা কিন্তু অনুরোধের ধরণটি প্রারম্ভিকভাবে প্রেরণে রাখার দাবি।

আপনি এখনও কোডটি ব্যবহার করতে পারেন 302(স্থায়ী পুনঃনির্দেশ) যদিও এটি অস্পষ্ট হিসাবে বিবেচিত হয়। যাই হোক না কেন, বেশিরভাগ ব্রাউজারগুলি 302একইভাবে 303কার্যকরভাবে নতুন কোড নির্দেশ দেয়।


301 সম্পর্কে আপনার সতর্কতা সম্পর্কে, আমরা একই ডোমেন নাম সম্পর্কে কথা বলছি তা সত্ত্বেও এটি প্রযোজ্য হবে? কীভাবে এটি এই ক্ষেত্রে প্রযোজ্য তা নিশ্চিত নয় ... সমস্ত URL এর থেকে পুনর্নির্দেশ http://example.com/testingকরা http://www.example.com/testing। দীর্ঘমেয়াদে একটি খারাপ দৃষ্টিভঙ্গি হতে পারে? ধন্যবাদ,
সারা_

-1

.Htaccess এ লিখুন :)

## Redirect from non-www to www (remove the two lines below to enable)
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

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