অ্যাপাচি ভার্চুয়ালহোস্টের মধ্যে ইউআরএল পুনর্নির্দেশ করবেন?


61

অ্যাপাচি সহ আমার একটি ডেডিকেটেড সার্ভার রয়েছে, যার ভিত্তিতে আমি কিছু ভার্চুয়ালহাস্ট সেট আপ করেছি। আমি www ডোমেনের পাশাপাশি নন-ডাব্লু ডোমেইন পরিচালনা করার জন্য একটি সেট আপ করেছি।

Www এর জন্য আমার ভিএইচ .কনফ ফাইল:

<VirtualHost *>
  DocumentRoot /var/www/site
  ServerName www.example.com
  <Directory "/var/www/site">
    allow from all
  </Directory>
</VirtualHost>

এটি সহ .htaccess:

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

Www- কে অ-www সংস্করণে পুনর্নির্দেশ করার কোনও সহজ উপায় আছে? বর্তমানে আমি একই সাথে উভয় সংস্করণ প্রেরণ করছি DocumentRootএবং ব্যবহার .htaccessকরছি তবে আমি নিশ্চিত আমি ভার্চুয়ালহোস্ট ফাইলটিতে এটি করতে সক্ষম হব।


উত্তর:


105

দেখা যাচ্ছে mod_rewriteনিয়মটি ভার্চুয়ালহোস্ট ফাইলটিতে RewriteBaseনিয়ম বাদে সূক্ষ্ম । আমি এটি দিয়ে শেষ করেছি:

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

সম্পাদনা: মন্তব্যে জোছির পরামর্শে, আমি এখন Redirectথেকে নির্দেশটি ব্যবহার করে এই সরলীকৃত সংস্করণটি ব্যবহার করছি mod_alias:

<VirtualHost *>
  ServerName www.example.com
  Redirect 301 / http://example.com/
</VirtualHost>

2
এর জন্য আপনার মোড_উইরাইটের দরকার নেই। পরিবর্তে মোড_আলিয়াস এবং এর পুনঃনির্দেশপরিমানীয় নির্দেশিকা ব্যবহার করুন।
জোসি

@ জোসচি: এর সুবিধা কী হবে? এটা কি দ্রুত?
অসন্তুষ্ট গোট

12
খালি ক্লায়েন্টকে পুনর্নির্দেশের জন্য আপনার সমস্ত চেক এবং সম্ভাব্যতা সহ পূর্ণ-প্রসারণিত পুনরায় লেখক ইঞ্জিনের দরকার নেই। এটি (প্রান্তিক) দ্রুত হবে যেহেতু মোড_আলিয়াস মোড_উইরাইটের মতো জটিল নয় এবং আপনার কেবল মোড_আররাইটের পরিবর্তে দু'জনের পরিবর্তে একটি নির্দেশিকা (রিডাইরেক্টপার্মেন্ট) প্রয়োজন হবে। এবং সর্বশেষে তবে কমপক্ষে আইএমএইচও নয় এটি বোঝা সহজ যে কনফিগারেশনে কী ঘটে যখন প্রথমবার কেউ এটি দেখেন।
জোশি

1
কিছু অদ্ভুত কারণে 301 পুনর্নির্দেশ .. আমাদের পক্ষে কাজ করে নি। আমাদের RewritRule বিকল্পটি ব্যবহার করতে হয়েছিল।
so_mv

দ্রষ্টব্য: উইন্ডোজ সার্ভার ২০০৮ R2 এন্টারপ্রাইজে WAMPSERVER 2.0 তে পিএইচপি 5.3.0 ব্যবহার করে, সবকিছু "নিষিদ্ধ" ফিরিয়ে :80দেওয়ার VirtualHost *কারণ সহ নয় !
সিইস টিমারম্যান

4

301 পুনঃনির্দেশগুলির সাথে খুব সাবধানতা অবলম্বন করুন কারণ, ডিফল্টরূপে, 301 পুনর্নির্দেশ প্রাপ্ত কোনও ব্রাউজার এটিকে স্থায়ীভাবে সংরক্ষণ করে রাখে - এর অর্থ এই ডোমেনটি অ্যাক্সেস করার চেষ্টা করার পরে সেই ব্রাউজারটি কী দেখতে পাবে তা আপনি নিয়ন্ত্রণ ছেড়ে দেবেন www.example.com

উদাহরণস্বরূপ এই আলোচনাটি দেখুন http://getluky.net/2010/12/14/301-redirects-cannot-be-undon/

সুতরাং হয় তা নিশ্চিত হয়ে নিন যে এটি ক্যাশেড না হয়ে গেছে, বা মোড_প্রক্সি ব্যবহার করুন (আমি মোড_প্রক্সির প্রস্তাব দিই)।

আপনি যদি ব্রাউজারের অ্যাড্রেস বারে ইউআরএল পরিবর্তন দেখতে দেয় তবে আপনি যদি ঠিক থাকেন তবে মোড_উইরাইট ব্যবহার করুন:

<VirtualHost *>
 ServerName www.example.com
 RewriteEngine on
 RewriteCond %{HTTP_HOST} ^www.example.com
 RewriteRule ^/(.*)$ http://example.com/$1 [L,R=301,E=nocache:1]
## Set the response header if the "nocache" environment variable is set
## in the RewriteRule above.
 Header always set Cache-Control "no-store, no-cache, must-revalidate" env=nocache
## Set Expires too ...
 Header always set Expires "Thu, 01 Jan 1970 00:00:00 GMT" env=nocache
</VirtualHost>

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

<VirtualHost *>
 ServerName www.example.com
 ProxyRequests Off
 <Proxy *>
 Order Deny,Allow
 Deny from all
 Allow from 203.0.113.67
 </Proxy>
 ProxyPass / http://example.com/
 ProxyPassReverse / http://example.com/
</VirtualHost>

এটি লক্ষ করা উচিত যে মোড_প্রক্সি, যখন খারাপভাবে কনফিগার করা থাকে, আপনার নেটওয়ার্ককে ক্ষতি করতে পারে।


5
301 এর মুল বিষয়টি এটি একটি স্থায়ী পুনঃনির্দেশ; আপনি যদি স্থায়ীভাবে পুনঃনির্দেশ চান তবে আপনার পরিবর্তে 302 বা 307 ব্যবহার করা উচিত।
নিকগ্রিম

2

আপনি যোগ করতে পারেন ServerAlias example.comকরতে VirtualHostতবে সম্পাদনার একটি পুনঃচালনা থেকে পৃথক হবে না।

সম্পাদন করা

যেহেতু আপনি পুনর্নির্দেশ করতে চান এবং আপনার উন্নত কার্যকারিতা প্রয়োজন নেই, তাই মনে হচ্ছে এটি ব্যবহার Redirectকরা আপনার পক্ষে যথেষ্ট। আপনি Redirectএকটি ভার্চুয়ালহোস্ট নির্দেশের অধীনে রাখবেন।

ক্লায়েন্টের সাইড সলিউশনটি meta refreshহ'ল ট্যাগ ব্যবহার করা ।


আপনি কিছুটা আরও ব্যাখ্যা করতে পারেন? আমি কিভাবে পুনর্নির্দেশ হবে www.example.comজন্য example.comএই পদ্ধতি ব্যবহার করছেন?
অসন্তুষ্ট গোয়াট

আপনার প্রাথমিক vhost দেখুন, আপনি উভয়ের জন্য এন্ট্রি আছে ServerNameএবং ServerAlias। একটির উদাহরণ ডটকম এবং অন্যটি www.example.com। তারপরে, উভয় ডিএনএস এন্ট্রি একই ভোস্টে উল্লিখিত দস্তাবেজগুলিতে অ্যাক্সেস করবে।
ওয়ার্নার

আমি যদিও একটি উপনাম নয়, তবে আপনাকে পুনর্নির্দেশ করতে চাই ।
অসন্তুষ্ট গোট

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

1

ভাল, আপনি SERVERNAME www.example.com এর জন্য একটি ভার্চুয়াল হোস্ট তৈরি করতে পারেন এবং এটি সার্ভারনেম উদাহরণ ডট কম দিয়ে অন্য ভার্চুয়াল হোস্টে পুনর্নির্দেশ করতে পারেন have

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