.htaccess - কীভাবে "www।" জোর করবেন। জেনেরিক উপায়ে?


102

এটি এতে পরিবর্তন domain.comহবে www.domain.com:

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

আমি "ডোমেন" অংশটি কীভাবে প্রতিস্থাপন করব যাতে এটি কোনও ডোমেনে কাজ করে ?

উত্তর:


249

আমি এই নিয়মটি ব্যবহার করব:

RewriteEngine On
RewriteCond %{HTTP_HOST} !=""
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

প্রথম শর্তটি হোস্টের মানটি খালি নয় কিনা তা যাচাই করে (HTTP / 1.0 এর ক্ষেত্রে); দ্বিতীয়টি হোস্ট মানটি দিয়ে শুরু হয় না কিনা তা পরীক্ষা করে www.; HTTPS দ্বারা তৃতীয় চেক ( %{HTTPS}পারেন হয় onবা off, তাই %{HTTPS}sপারেন হয় onsবা offsএবং ক্ষেত্রে মিল দেখা যায়)। তারপরে প্রতিস্থাপনের অংশটি কেবলমাত্র পুরো অংশগুলিতে তথ্য অংশগুলিকে মার্জ করে।onssRewriteRule


31
আপনি যদি www.yourdomain.com এ সমস্ত সাব-ডোমেন ফরোয়ার্ড করতে চান তবেই এই সমাধানটি কাজ করে। আপনি যদি কেবলমাত্র জোরপূর্বক www RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
চাপাতে

2
আমি পাবেন না কোনো আমার সাবডোমেন শাসন প্রশ্ন পোস্ট করা ... ব্যবহার www.mydomain.com ফরোয়ার্ড
তোমার

3
খুব চালাক! আমি চাই আপনি HTTPS চেককে ক্যাপচার গ্রুপে "এস" ফিরিয়ে দিতে বাধ্য করেছিলেন, যা আপনি নিম্নলিখিত লাইনে ব্যবহার করেছেন। খুব মার্জিত
21_31 এ 22_14

ইউনিভার্সাল উত্তরের মতো মনে হয়, এইচটিটিপি এবং সাধারণ প্রোটোকলগুলি কভার করে, একটি কবজির মতো কাজ করে।
ক্লেইন সিলভা

1
ধন্যবাদ! আমি RewriteEngine Onএটি সম্পূর্ণ করার জন্য প্রথম লাইন হিসাবে যুক্ত করব , এটি অনুলিপি হিসাবে এটি অনুলিপি-পেস্ট করা থাকলে একটি 500 সার্ভার ত্রুটি হতে পারে।
রায়ান কাসাস


5

আপনি যদি আপনার সাইটে সমস্ত নন-www অনুরোধগুলি www সংস্করণে পুনর্নির্দেশ করতে চান তবে আপনাকে যা করতে হবে তা হ'ল নিম্নলিখিত কোডটি আপনার .htaccess ফাইলে যুক্ত করুন:

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

3

এটি সাবডোমেনগুলির সাথে কাজ করবে না।

ডোমেন.কম সঠিকভাবে www.domain.com- এ পুনঃনির্দেশিত হয়

কিন্তু

images.domain.com www.images.domain.com- এ পুনঃনির্দেশিত হয়

সাবডোমেনটি "www নয়" তা পরীক্ষা করার পরিবর্তে দুটি বিন্দু আছে কিনা তা পরীক্ষা করে দেখুন:

RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ HTTP%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

আমি এই সমাধানটি পছন্দ করি। যাইহোক .co.uk এর মতো টিএলডি দিয়ে একই জিনিসটি সম্পন্ন করতে?
টাইলারএসএন

1
@ iUseMagento এখন কেবল বিন্দুগুলি বাড়ান, উদাহরণস্বরূপ: RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\.(.*)\. [NC](কথায় কথায় বলতে গেলে আপনার টিএলডি এখনও রয়েছে .ukএবং আপনার something.co
ডোমেনও

এই ক্ষেত্রে .co একটি দ্বিতীয় স্তরের ডোমেন এবং এটি আসলে আপনার ডোমেনের একটি অংশ নয় যেখানে .uk একটি দেশ কোড টিএলডি হিসাবে is সত্যি কথা বলতে কী, হোস্টিং ইন্ডাস্ট্রিতে কাজ করা এবং ডোমেন নামের নতুন ফর্ম্যাটগুলি আমি বর্তমান টিএলডি ফর্ম্যাটগুলি অফিসিয়াল ব্যবহার ব্যতীত অন্য যে কোনও কিছুর জন্য স্থায়ী দেখতে পাচ্ছি না। সরকার, সংস্থা ইত্যাদি। অদূর ভবিষ্যতে যখন আপনি বর্তমান নিয়মের সাথে একই দামের জন্য fqdn, fred.bloggs রেজিস্ট্রেশন করতে পারবেন তখন ব্যক্তিগত ওয়েবটি ডিএনএস দৃষ্টিকোণ থেকে খুব আলাদা দেখাবে।
ক্রিস

1

নিম্নলিখিতগুলির কোনও নয় এমন কোনও অনুরোধের 'www' উপসর্গ করা উচিত, এবং সম্পাদিত অনুরোধটিকে নতুন ইউআরআইতে পুনর্নির্দেশ করতে হবে।

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

1
RewriteEngine On

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

এটি সাবডোমেনগুলি বাদ দিয়ে পুনঃনির্দেশ example.comকরে www.example.com


আমার কাছে মনে হচ্ছে এটি www.example.com www.www.example.com হাহাকে পাঠাচ্ছে
অ্যালবার্ট রেনশো

@ অ্যালবার্ট সম্ভবত এটি আপনার ব্রাউজারের ক্যাশের কারণে। আপনার ক্যাশে সাফ করুন এবং আবার চেষ্টা করুন।
অমিত ভার্মা

আপনি সঠিক! আমি কেবল ছদ্মবেশে (ক্রোম) দৌড়েছি এবং এটি দুর্দান্ত কাজ করেছে, ধন্যবাদ!
অ্যালবার্ট রেনশওয়া 25'17

1
আমি এই জেনেরিক নিয়মটি খুব পছন্দ করি। কিন্তু এটা কাজ doesn`t domain.co.uk যেমন ইতিমধ্যে এটি দুটি বিন্দু আছে। এই নিয়মটি কীভাবে এটি .co.uk এর সাথে কাজ করার জন্য পরিবর্তন করা যেতে পারে?
সাচা ভারবেক

1
.Co.uk এবং অন্যান্য উপ cctlds এর জন্য এটি কাজ করে: ^ ([[^।] + \। [^।] +) (\। (ইউকে | আরআর | সাই | এআর। ত্রি))? $ তবে দুর্ভাগ্যক্রমে কিছু মিশ্র রয়েছে) টাইপ করা tlds ( wiki.mozilla.org/TLD_List ) এর মতো যা ডোমেন.ইস পাশাপাশি ডোমেইন.কম.কে অনুমতি দেয়। রেজেক্সে | এস যুক্ত করা ডোমেন.য়েসের সাথে www.domain.es এর সাথে মিলবে যা এখানে চাইছিল না। এই মিশ্র টাইপযুক্ত উপ-সিসিটিএলডিগুলি হ্যান্ডেল করার একটি উপায় খুঁজে পেতে হবে
সাচা

0

এটি একটি পুরানো প্রশ্ন এবং এটি করার বিভিন্ন উপায় রয়েছে। সর্বাধিক সম্পূর্ণ উত্তর, আইএমএইচও এখানে পাওয়া যায়: https://gist.github.com/vielhuber/f2c6bdd1ed9024023fe4 । (কোডটি এখানে আটকানো এবং ফর্ম্যাট করা আমার পক্ষে কার্যকর হয়নি)


-1

এটি আমার জন্য যাদুর মতো কাজ করেছিল

RewritCond% {HTTP_HOST} ^ sitename.com [এনসি] RewritRule ^ (। *) $ Https://www.sitename.com/ $ 1 [এল, আর = 301, এনসি]

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