سؤال

يريد عملائك استخدام 101 يعيد توجيهات لإجبار المجال الفرعي www "على مواقعهم. لذلك "example.com/something" يحل إلى "www.example.com/somthing" إلخ.

ما أحاول القيام به هو ببساطة إضافة هذا إلى ملف vhost الخاص بي:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost     
  ServerName  example.com
  ServerAlias www.*
  DocumentRoot /data/apps/example.com/current/public
  RailsBaseURI / 

  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^example\.com
  RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

لقد ضمنت أيضا أن إعادة كتابة mod تم تمكين عن طريق:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload

يبدو أن نتائج جهودي الحالية ناجحة بشكل أساسي. إعادة تشغيل Apache وكل شيء يعمل كما هو متوقع باستثناء إعادة الكتابة لا يحدث. لذلك كلا "www.example.com 'و" example.com "حل". لا يتم إعادة توجيه المتصفح إلى "www.example.com" عندما ينبغي عليه. أيه أفكار؟ لقد حاولت إعادة تحميل التكوين وإعادة تشغيل Apache عدة مرات، لكنني لا يبدو لي أن أحصل على قواعد إعادة الكتابة العاملة. هل أعطيها في المكان الخطأ عن طريق وضعها هنا في Vhost بدلا من ملف .htaccess؟

أي نصيحة هنا ستكون مفيدة. أنا حيرة تماما.

هل كانت مفيدة؟

المحلول

ضع هذا أدناه إدخال VirtualHost الرئيسي الخاص بك:

<VirtualHost *:80>
    ServerName example.com
    RedirectMatch permanent ^/(.*) http://www.example.com/$1
</VirtualHost>

يجب أن يحتوي VirtualHost الرئيسي على الإدخال ServerName www.example.com وليس الأسماء المستعارة أو إعادة توجيهات. أيضا، mod_rewrite غير مطلوب لهذا إعادة التوجيه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top