إتقان إعادة التوجيه باستخدام mod_rewrite
في Apache
إذا كنت تدير موقعًا على الويب يتطلب إعادة توجيه حركة المرور من مجال إلى آخر مع الحفاظ على الوصول إلى بعض المسارات المحددة، فإن mod_rewrite
في Apache يمكن أن يكون أفضل صديق لك. في هذا المنشور، سنتناول كيفية إعادة توجيه جميع الطلبات باستثناء مسار واحد محدد، مثل /audio
، باستخدام mod_rewrite
.
المشكلة
يجد العديد من مديري المواقع أنفسهم في موقف يحتاجون فيه إلى إعادة توجيه حركة المرور إلى نطاق جديد، ولكنهم يرغبون في السماح لبعض الطلبات بالمرور دون تغيير. على سبيل المثال، إذا كنت تنتقل من mydomain.example
إلى newdomain.example
، وترغب في إعادة توجيه جميع الحركة باستثناء الطلبات الخاصة بـ /audio
، فهذا هو المكان الذي يأتي فيه mod_rewrite
.
مشكلات الصياغة الشائعة
لقد تضمن المحاولة الأصلية من قبل أحد المستخدمين لإعداد إعادة التوجيه استخدامًا معقدًا للتعبيرات العادية وشروط متقدمة. في حين كانت النية صحيحة، فإن استخدام HTTP_HOST
في RewriteCond
كان مضللًا لأنه لا يتضمن مسار الطلب.
الحل
لتحقيق إعادة التوجيه المطلوبة مع السماح بالوصول إلى مسار /audio
، يجب تعديل إعدادات Apache الخاصة بك على النحو التالي:
إعدادات خطوة بخطوة
-
تفعيل محرك إعادة الكتابة: أولاً، تأكد من أن محرك إعادة الكتابة مفعل.
RewriteEngine on
-
إعداد الشرط: استخدم المتغير
REQUEST_URI
للتحقق مما إذا كان الطلب ليس للمسار/audio
.RewriteCond %{REQUEST_URI} !^/audio
-
تعريف قاعدة إعادة الكتابة: أنشئ قاعدة تتعامل مع إعادة التوجيه إلى النطاق الجديد.
RewriteRule ^(.*)$ http://www.newdomain.example [L,R=301]
تجميع كل شيء معًا
في إعداد VirtualHost
الخاص بك، يجب أن يبدو الأمر كما يلي:
<VirtualHost *:80>
ServerAdmin me@mydomain.example
DocumentRoot "/var/www/mydomain.example/htdocs"
ServerName www.mydomain.example
ServerAlias mydomain.example
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/audio
RewriteRule ^(.*)$ http://www.newdomain.example [L,R=301]
RewriteLog /path/to/log/file
RewriteLogLevel 3
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
تصحيح إعداداتك
إذا واجهت مشكلات بعد تعيين ذلك، فكر في تفعيل التسجيل لرؤية الشروط والقواعد أثناء العمل:
- استخدم
RewriteLog
لتحديد ملف تسجيل ورفع مستوى التسجيل بما يكفي لالتقاط التفاصيل ذات الصلة.
RewriteLog /path/to/log/file
RewriteLogLevel 3
فهم السجلات
عندما تتحقق من السجلات بعد تطبيق القواعد أعلاه، تأكد من أن الطلبات إلى /audio
لا تصطدم بقاعدة إعادة الكتابة.
الخلاصة
إعداد إعادة توجيه عناوين URL باستخدام mod_rewrite
هو وسيلة قوية لإدارة حركة المرور مع ضمان بقاء المسارات المحددة قابلة للوصول. من خلال التركيز على الإعداد الصحيح وفهم سلوك REQUEST_URI
، يمكنك حل المشكلات المتعلقة بإعادة التوجيه غير المرغوب فيها بفعالية.
مع هذه الإرشادات، أنت الآن مجهز للتعامل مع إعادة توجيه عناوين URL في Apache بثقة. برمجة سعيدة!