سؤال

نعم.لذلك أقوم ببناء هذا الموقع الذي يمكن الوصول إليه من خلال مجالين مختلفين.لذلك لا أستطيع استخدام RewriteBase في ملف .htaccess الخاص بي.يبدو أن القواعد (أدناه) التي أستخدمها للتغلب على هذه المشكلة تعمل بشكل جيد.ومع ذلك، عندما أستخدم إعدادات .htaccess أدناه على الصندوق المحلي الخاص بي باستخدام عناوين URL نظيفة (WAMP)، فإن كل شيء يعمل بشكل جيد ولكن في اللحظة التي أستخدم فيها هذا على الخادم المباشر (استضافة مشتركة LAMP)، تعرض كل صفحة أقوم بالتنقل إليها الصفحة الرئيسية (الصفحة الرئيسية) واحد ضمن الفهرس على ما أعتقد) على الرغم من أنه من الواضح أنه يتم تحديث عنوان URL في المتصفح.

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain1.com/(.*)$
  RewriteRule ^(.*)$ /domain1.com/index.php?q=$1 [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain2.com/(.*)$
  RewriteRule ^(.*)$ /domain2.com/index.php?q=$1 [L,QSA]
</IfModule>

أي مساعدة أو أفكار هي موضع تقدير كبير.

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

المحلول

ربما يكون أفضل ما يمكنك فعله هو إعادة إنتاج المشكلة على صندوقك المحلي وتشغيل RewriteLogLevel حتى تتمكن من رؤية ما يحدث.(نظرًا لأنك لا تستطيع عادةً تغيير مستوى السجل على الاستضافة المشتركة)

قد تتمكن من "محاكاة" المشكلة عن طريق إعادة كتابة الدليل في تكوين Apache الرئيسي.(من الواضح أن الاستضافة المشتركة تقوم بإعادة الكتابة بنفسها قبل أن تصل إلى .htaccess!) إذا لم تتمكن من إعادة إنتاج المشكلة، فقد تضطر إلى بدء تصحيح أخطاء التجربة والخطأ على الخادم البعيد.هذا أمر قبيح ولكن إذا كان هذا هو خيارك الوحيد:

استخدم علامة R (إعادة التوجيه) في البدائل لإرسال أي عنوان URL تمت إعادة كتابته مرة أخرى إلى متصفحك.استخدم TELNET (أو وظيفة إضافية مناسبة للمتصفح) لفحص استجابات HTTP.

لا تنس الهروب من النقاط في التعابير المنطقية!

كملاحظة جانبية، تتم مطابقة نمط RewriteRule قبل RewriteConds فوقه.ربما يكون هذا النوع من الإعداد أفضل للأداء:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/domain1\.com/(.*)$ /domain1.com/index.php?q=$1 [L,QSA]
#                     ^ should be escaped

لاحظ أنني لم أختبر هذا.

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