.htaccess সমস্ত পৃষ্ঠা নতুন ডোমেনে পুনঃনির্দেশ করে


218

পুনঃনির্দেশিত নিয়মটি আমি সমস্ত পৃষ্ঠাতে olddomain.exampleপুনর্নির্দেশের জন্য পুনর্নির্দেশের জন্য ব্যবহার করব newdomain.example?

সাইটের সম্পূর্ণ ভিন্ন কাঠামো রয়েছে, তাই আমি চাই পুরানো ডোমেনের অধীনে থাকা প্রতিটি পৃষ্ঠা নতুন ডোমেন সূচী পৃষ্ঠায় পুনঃনির্দেশিত করা হোক ।

আমি ভেবেছিলাম এটি করবে (ওল্ডডোমেন.অ্যাসেম্পল বেস ডিরেক্টরিের অধীনে):

RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.example/ [R=301]

তবে আমি যদি নেভিগেট করি তবে আমাকে olddomain.example/somepageপুনঃনির্দেশিত করা হবে newdomain.example/somepage। আমি কেবল newdomain.exampleপৃষ্ঠা প্রত্যয় ছাড়াই পুনর্নির্দেশের প্রত্যাশা করছি ।

আমি কীভাবে শেষ অংশটি রাখব?


8
সময় সাশ্রয় করতে, ডানদিকে উত্তরের জন্য নিচে স্ক্রোল করুন যা RewriteEngine on RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]* স্ট্যাকওভারফ্লো.com
কাই নাক

2
এটি উল্লেখ করা মূল্যবান যে, বিশেষত একটি এসইও দৃষ্টিকোণ থেকে, সূচক / হোম পৃষ্ঠায় একাধিক থেকে একজনকে পুনর্নির্দেশ করা সাধারণত একটি খারাপ ধারণা। গুগল সম্ভবত এটি নরম -404 হিসাবে দেখবে।
মিঃ হোয়াইট

উত্তর:


200

এটি হতে পারে:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^OLDDOMAIN\.com$ [NC]
RewriteRule ^(.*)$ http://NEWDOMAIN.com [R=301,L]

হুম, আপনি কি নিজের ব্রাউজারটি আবার লোড করার চেষ্টা করতে পারেন? এটি এখানে xampp এর সাথে পুনর্নির্দেশও। আমি সবেমাত্র পরীক্ষা করেছি।
আপনি

আমার খারাপ ... এটি কাজ করে, আমার হোস্টিং পরিষেবাটিতে অন্য কিছু পুনর্নির্দেশ ছিল যার উপর ফু **** ছিল। ধন্যবাদ! :)
যুবাল আদম

25
এটা হবে না RewriteCond %{HTTP_HOST} !^NEWDOMAIN\.com$ [NC]?
জিম জের্তস

1
দীর্ঘ শীতের পরে আমি কোডটি সম্পাদনা করেছি যাতে এটি শেষ পর্যন্ত কাজ করতে পারে। (সঠিকটি যদি EQUAL হয় এবং ওল্ডডোমেনে আলাদা না হয় তবে এটিই ছিল সমস্যা!)
কারলা

5
@ জিমগুর্টস কেবলমাত্র যদি আপনি এমন সব কিছু পুনর্নির্দেশ করতে চান যা নিউডোমেন নয়। যাইহোক, এই ক্ষেত্রে, আমরা কেবলমাত্র ওল্ড-ডোমেন পুনর্নির্দেশ করতে চেয়েছিলাম।
কারলা

442

নীচের উত্তরটি সম্ভবত অসীম পুনর্নির্দেশের লুপের কারণ হতে পারে ...

এখানে, এটি ইউআরএলটিতে ডোমেন নামের পরে নতুন ডোমেন ইউআরএলে ঠিক একই অনুলিপিটিতে সমস্ত কিছু পুনঃনির্দেশ করে:

RewriteEngine on 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

www.example.net/somepage.html?var=foo পুনঃনির্দেশ www.newdomain.com/somepage.html?var=foo


21
এটি এমনকি নতুনডোমোইন ডট কমের জন্যও সমস্ত অনুরোধ পুনর্নির্দেশ করবে না? এবং মূলত সেই ক্ষেত্রে দুটি অনুলিপি অনুরোধের কারণ?
বিল দামী

33
প্রশ্নটি হল হোম পৃষ্ঠায় সবকিছু পুনর্নির্দেশ করা
kravits88

28
যদিও এটি প্রশ্নের উত্তর নয়, তবে এসই থেকে এই প্রশ্নের উত্তর পেয়েছি ঠিক এই উত্তরটি। ধন্যবাদ !!!
ডেভ

সাবডোমেন থেকে নতুন ডোমেনে পুনঃনির্দেশের জন্য আমরা কীভাবে পারি?
সুখজিন্দর সিং

2
দয়া করে কেউ বিলের প্রশ্নের উত্তর দিতে পারেন। ডুপ্লিকেট অনুরোধ এবং / অথবা অপ্রয়োজনীয় পুনরায় লেখাগুলি রোধ করার জন্য এটি কি রিরাইটকন্ড ব্যবহার করা উচিত নয়? আমি মনে করি এটি প্রয়োজনীয় না হলেও প্রতিবার পুনরায় লেখার জন্য এর কোনও লক্ষণীয় প্রভাব নেই। তবে কেন করবেন।
অ্যান্ড্রু

80

কেবল পরিষ্কার করার জন্য, হোস্টিং পুনঃনির্দেশের পথে যা ছিল তা সরিয়ে দেওয়ার পরে, আমার আসল সমাধানটিও কাজ করে:

RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.com/ [R=301]

এটি ডিফল্ট সূচকে পুনর্নির্দেশ করবে, যা আপনার প্রশ্নটি সম্পর্কে ছিল। কেবল স্পষ্টতার জন্য, যেহেতু সান্নিধ্যের কারণে, আপনার বক্তব্যটি এর ঠিক উপরে ব্যবহারকারী 968421 এর উত্তরের দিকে নির্দেশিত বলে মনে হচ্ছে, নতুন ডোমেনের সাথে সম্পর্কিত ফাইলের নামটি পুনঃনির্দেশ করার অভিপ্রায়টি যখন ব্যবহারকারী 968421 এর সঠিক তখনই সঠিক।
RationalRabbit

19

আমি আমার ওয়ার্ডপ্রেস ব্লগে এটি .htaccess হিসাবে ব্যবহার করেছি। এটি http: //www.blah.example/asad , http: //blah.example/asad , http: //www.blah.example2/asad ইত্যাদিতে রূপান্তরিত হয়েছে: http://blah.example/asad সকলকে ধন্যবাদ অন্যান্য উত্তর আমি এটি বুঝতে পেরেছি।

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

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

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

2
আমি এটিকে সকলের সবচেয়ে বিস্তৃত উত্তর হিসাবে বিবেচনা করি: এটি প্রতিটি পৃষ্ঠার জন্য র‌্যাঙ্কিং সংরক্ষণ করে এবং প্রাথমিক নয় এমন সমস্ত ডোমেনের জন্য এটি একটি ক্যাচল! এর চেয়ে ভাল আর কী হতে পারে?
nzn

1
এখানে মূল বিষয়টি হ'ল ওয়ার্ডপ্রেস সূচক পুনর্লিখনের নিয়মের আগে ডোমেন পুনর্লিখনের নিয়ম আসে ।
মিঃমক্সি

14
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www.olddomain.com$
  RewriteRule (.*)$ http://www.newdomain.com/$1 [R=301,L]
</IfModule>

এটি আমার পক্ষে কাজ করেছে


হ্যাঁ, এই পদ্ধতিটি পরিষ্কার এবং সুন্দর হবে!, আমার পক্ষেও কাজ করেছিল।
কোডি

এটি ইউআরএল-এর প্যারামিটারের সাথে পুনর্নির্দেশ করবে যদি কোনও হয় - index.php? aa = 9 প্যারামিটারটিকে নতুন ডোমেনে নিয়ে যায়
দার্কসিম্ফনি

13

এটি করার বিভিন্ন উপায় এবং বিভিন্ন পুনর্নির্দেশগুলি রয়েছে, আমি সেগুলি নীচে তালিকাভুক্ত করেছি:

301 (স্থায়ী) পুনঃনির্দেশ: স্থায়ী ভিত্তিতে একটি সম্পূর্ণ সাইটকে আলাদা ইউআরএল এ নির্দেশ করুন। এটি পুনর্নির্দেশের সবচেয়ে সাধারণ ধরণের এবং বেশিরভাগ পরিস্থিতিতে কার্যকর। এই উদাহরণে, আমরা "উদাহরণ.com" ডোমেনে পুনঃনির্দেশ করছি:

# This allows you to redirect your entire website to any other domain
Redirect 301 / http://example.com/

302 (অস্থায়ী) পুনঃনির্দেশ: একটি সম্পূর্ণ সাইটকে একটি ভিন্ন অস্থায়ী URL এ নির্দেশ করুন। আপনার যখন অস্থায়ী অবতরণ পৃষ্ঠা হয় এবং পরবর্তী তারিখে আপনার মূল অবতরণ পৃষ্ঠায় ফিরে যাওয়ার পরিকল্পনার সময় এটি SEO উদ্দেশ্যে কার্যকর হয়:

# This allows you to redirect your entire website to any other domain
Redirect 302 / http://example.com/

একটি নির্দিষ্ট সাবফোল্ডারে সূচক html পুনর্নির্দেশ:

# This allows you to redirect index.html to a specific subfolder
Redirect /index.html http://example.com/newdirectory/

একটি পুরানো ফাইলকে নতুন ফাইলের পথে পুনঃনির্দেশ করুন:

# Redirect old file path to new file path
Redirect /olddirectory/oldfile.html http://example.com/newdirectory/newfile.html

নির্দিষ্ট সূচী পৃষ্ঠায় পুনর্নির্দেশ করুন:

# Provide Specific Index Page (Set the default handler)
DirectoryIndex index.html

যদি আপনি প্রথম উদাহরণে $ 1 যোগ করেন তবে এর মতো Redirect 301 / http://example.com/$1 মূল সাইটটির সমস্ত পৃষ্ঠাগুলি নতুন সাইটের মূলকে পুনঃনির্দেশিত করা হবে
ইয়াসাইন মোকনি

@ ইয়াসিনএমকে $1এখানে প্রয়োজনীয় নয়, আপনি RedirectMatchনির্দেশের কথা ভাবছেন (তবে তারপরেও আপনাকে $1রেফারেন্সের জন্য একটি ক্যাপচারিং গ্রুপ সংজ্ঞায়িত করতে হবে )।
মিঃ হোয়াইট

যদিও এই সমস্ত Redirectনির্দেশাবলী পছন্দ মতো পুনঃনির্দেশ করবে, যেখানে ওপি নতুন সাইটের হোম পৃষ্ঠায় পুনঃনির্দেশ করতে চাইছে (যদিও এটি নিজেই প্রস্তাবিত নয়)। আপনি RedirectMatchযদি কোনও নির্দিষ্ট ইউআরএলটিতে পুনর্নির্দেশ করতে চান তবে আপনাকে নির্দেশিকাটি ব্যবহারের প্রয়োজন হতে পারে ।
মিস্টারউইট

301 এর পরিবর্তে আপনি পুনঃনির্দেশ স্থায়ী / এইচ টিটিপিএস: //www.example.com লিখতে পারেন, আপনি vhost ফাইলে এটি করতে পারেন
ইয়ভন হুইন

তবে .htaccess সম্পর্কিত প্রশ্নটি কেন তবে vhost ফাইলের উল্লেখ করবেন?
রুটিইংগলস

9

আপনি যদি কিছু অবস্থান থেকে সাবডোমেনে পুনর্নির্দেশ করতে চান তবে আপনি ব্যবহার করতে পারেন:

Redirect 301 /Old-Location/ http://subdomain.yourdomain.com


এটি সেরা উপায়। কারণ অনেক ওয়েবহাস্টাররা .htaccess এ রিরাইটইঞ্জিন ব্যবহারের অনুমতি দেয় না। এটি যাইহোক দুর্দান্ত কাজ করে!
Sprinterfreak

আপনাকে পুনর্নির্দেশের জন্য অবশ্যই রাইরাইটইঞ্জাইন ব্যবহার করতে হবে। আপনার যে কারণে সমস্যা হয়েছে তার কারণ হ'ল রাইরাইটইঞ্জাইন ইতিমধ্যে সক্রিয় ছিল এবং আপনার কেবল নিয়ম পুনর্নির্দেশের প্রয়োজন। আমি খুশি যে সাহায্য করেছে।
খালি

সত্য না. এটি সমস্ত পুনর্লিখনের জিনিস এড়িয়ে যায় এবং RewriteEngine On500 টি অভ্যন্তরীণ ত্রুটি ব্যবহার করার সময় । এটি একটি অত্যন্ত সীমাবদ্ধ ওয়েবস্পেস। ব্যবহারের Redirect 301 / http://fooসাথে মোকাবিলা করার একমাত্র সম্ভাব্য উপায়।
Sprinterfreak

6

আপনি যে নতুন ডোমেনটিতে আপনার পুরানো সাইটটি পুনঃনির্দেশ করছেন তা যদি কোনও ভিন্ন হোস্টে থাকে তবে আপনি কেবলমাত্র একটি ব্যবহার করতে পারেন Redirect

Redirect 301 / http://newdomain.com

এই থেকে সব অনুরোধ পুনর্চালনা করবে olddomainকরার newdomain

Redirectদিকনির্দেশনা কাজ করবে না বা Redirect loopযদি আপনার নিউডোমাইন এবং ওল্ডডোমেন উভয়ই একই হোস্টে থাকে তবে সেই ক্ষেত্রে আপনাকে mod-rewriteঅনুরোধ করা হোস্ট শিরোনামের উপর ভিত্তি করে পুনঃনির্দেশের জন্য ব্যবহার করতে হবে।

RewriteEngine on


RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$
RewriteRule ^ http://newdomain.com%{REQUEST_URI} [NE,L,R] 

5

আমার খ্যাতি আমাকে কোনও উত্তর সম্পর্কে মন্তব্য করতে অনুমতি দেবে না, তবে আমি কেবল এটি উল্লেখ করতে চেয়েছিলাম যে এখানে সর্বাধিক রেট করা উত্তরটিতে একটি ত্রুটি রয়েছে:

RewriteEngine on 
RewriteRule ^(.*)$ http://www.newdomain.com$1 [R=301,L]

$ 1 এর আগে একটি স্ল্যাশ থাকা উচিত, তাই

RewriteEngine on 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

3

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

function curPageURL() {
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    }
    return $pageURL;
}
$redirect = str_replace("www.", "", curPageURL());
$remove_http_root    = str_replace('http://', '', $redirect);
$split_url_array     = explode('/', $remove_http_root );


if($split_url_array[0] == "olddomain.com"){
    header("Location: http://www.newdomain.com/$split_url_array[1]");
    die();
}

2

এটি অ্যাপাচি (এবং এইভাবে মোড_উইরাইট) এর পুরানো সংস্করণগুলির মধ্যে একটি বাগ যেখানে পাথের উপসর্গটি আবার পরিবর্তিত হয়ে থাকলে পুনরায় লেখার জন্য সংযুক্ত করা হয়েছিল। এখানে দেখো

আমার মনে হয় এটি অ্যাপাচি ২ ভি ২.২.১২ এ স্থির করা হয়েছে, আপনার একটি বিশেষ পতাকা রয়েছে যা ব্যবহার করার দরকার আছে যা আমি এখানে খুঁজে পেলে এটি যুক্ত করব, (আমি মনে করি এটি কোনও পাথের জন্য এনপি ছিল)

RewriteRule ^(.*)$ http://newdomain.com/ [??]

আমি প্রায় একমাস ধরে এর বিরুদ্ধে আমার মাথা বেঁধে দিয়েছি
প্রশ্ন চিহ্ন

2

ব্যবহারের দৃষ্টিকোণ থেকে এটি আরও ভাল হবে, যদি আপনি অনুরোধটিও (যেমন এই মুহুর্তে আপনার কাছে কী রয়েছে) দিয়ে পাঠান এবং আপনার নতুন সাইটটিকে এটি মোকাবেলা করতে দিন:

আপনি "/ পণ্য" অনুসন্ধান করেছেন।

দুর্ভাগ্যক্রমে এই পৃষ্ঠাটি চলে গেছে। আপনি কি তার পরিবর্তে "/ নতুন_প্রডাক্টগুলি" দেখতে চান?

(এবং আরও ভাল, তবুও, স্বয়ংক্রিয়ভাবে এটি করা হচ্ছে))

এটি সম্ভবত একটি বৃহত্তর ওয়েবসাইটের জন্য প্রচুর কোডিং এবং হিউরিস্টিকস, তবে আমার মতে এটি ব্যবহারকারীর সন্তুষ্টির শর্তে পরিশোধ করবে (যখন আপনার স্বপ্নের পণ্যটির যত্ন সহকারে সংরক্ষণ করা বুকমার্ক আপনাকে কেবল newdomain.com এর প্রথম পৃষ্ঠায় নিয়ে যাবে, এটি হতাশাজনক।)


ওয়েবসাইটটির জন্য এটি পুরোপুরি অপ্রাসঙ্গিক কারণ পুরো ওয়েবসাইটটি পরিবর্তিত হয়েছে, তবে আপনি একেবারে সঠিক। ওয়েবসাইটটি যতটা সম্ভব পিছনের দিকে সামঞ্জস্যপূর্ণ হওয়া উচিত। +1
যুবাল আদম

2

আপনি যদি কোনও প্যারামিটার বা পৃষ্ঠাগুলি ছাড়াই নতুন আলাদা সাইট (ডোমেন) সম্পূর্ণ করতে পুনর্নির্দেশ করতে চান তবে এটি ব্যবহার করুন:

RewriteEngine On
RewriteRule / http://new-domain.com/$1? [R=301]

1
এটি প্রত্যাশার মতো কাজ করবে না যখন .htaccessএটি ডকুমেন্টের মূলের কোনও URL এর সাথে মেলে না। এটি একটি সার্ভার কনফিগারেশন বা ভার্চুয়ালহোস্ট প্রসঙ্গে কাজ করবে।
মিঃ হোয়াইট

2

আমি ব্যবহারকারীর 968421 এর উত্তর এবং ওপি'র সমাধানটি চেষ্টা করেছিলাম তবে ব্রাউজারটি একটি চেকআউট পৃষ্ঠার জন্য সুরক্ষা ত্রুটি তৈরি করে। আমি ঠিক বলতে পারি না কেন।

আমাদের হোস্ট (সাইট গ্রাউন্ড) এটিও বের করতে পারেনি।

চূড়ান্ত সমাধানটি খুব কাছাকাছি ছিল, তবে ব্যবহারকারীর 68৮68৪২১ এর উত্তরে সামান্য কিছুটা টুইট (পার্শ্ব দ্রষ্টব্য: ওপি থেকে আলাদা না করে, আমি কেবল হোমপৃষ্ঠায় নয়, তবে সংশ্লিষ্ট পৃষ্ঠায় পুনঃনির্দেশের চেষ্টা করছিলাম তাই আমি $1ব্যবহারকারীর the68৮৪২১ এর পূর্ববর্তী রেফারেন্সটি [ ডোমেনের পরে]] বজায় রেখেছি উত্তর):

RewriteEngine on
RewriteRule (.*) https://newdomain.com/$1 [R=301,L]

একটি হোস্ট গেটর নিবন্ধ (মরিয়া সময়, মরিয়া ব্যবস্থা, amiright?) দ্বারা প্রস্তাবিত এই htaccess পুনর্নির্দেশ জেনারেটর থেকে টুইট পেয়েছেন ?


2

ঠিক এর মতো সহজ এবং এটি URL থেকে নতুন ডোমেনে ট্রেলিং কোয়েরি বহন করবে না।

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule .* https://www.newdomain.com/? [R=301,L]

এটি আসলে আমার পক্ষে কাজ করেছে, নতুন ডোমেনে কোনও স্লাগ পাস করার সাথে সাথে সমাধানের দরকার ধন্যবাদ ধন্যবাদ সিংফফনি
ফয়সাল মেহমুদ আওয়ান

1

হোস্টারের দ্বারা শর্তসাপেক্ষে পুনর্নির্দেশগুলি ব্যবহার করুন Options -FollowSymLinksএবং AllowOverride -Optionsকয়েকটি স্থানীয় ফাইলও পরিবেশন করা উচিত যদি:

নমুনা .htaccess

# Redirect everything except index.html to http://foo
<FilesMatch "(?<!index\.html)$">
    Redirect 301 / http://foo/
</FilesMatch>

এই উদাহরণটি স্থানীয় সূচক html পরিবেশন করবে এবং অন্য সমস্ত কর্মীদের নতুন ডোমেনে পুনঃনির্দেশ করবে।


1

নতুন হোম ডোমেইনে সকলকে পুনর্নির্দেশের জন্য এই মিথোডটি ব্যবহার করে দেখুন, এটি আমার জন্য কাজ করে:

RewriteCond %{HTTP_HOST} ^olddomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
RewriteRule ^(.*)$ "https\:\/\/newdomain\.com\/" [R=301,L]

0

পূর্ববর্তী উত্তরগুলি আমার পক্ষে কার্যকর হয়নি।

আমি এই কোডটি ব্যবহার করেছি। আপনি যদি ওএসএক্স ব্যবহার করছেন তবে সঠিক ফর্ম্যাটটি ব্যবহার করার বিষয়টি নিশ্চিত করুন।

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?OLDDOMAIN\.com$ [NC]
RewriteRule (.*) http://www.NEWDOMAIN.com/ [R=301,L]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.