mod_rewrite إلى الاسم المستعار لنوع لاحقة ملف إلى آخر

StackOverflow https://stackoverflow.com/questions/8832

  •  08-06-2019
  •  | 
  •  

سؤال

آمل أن أتمكن من شرح ذلك بشكل واضح بما فيه الكفاية، ولكن إذا لم يكن الأمر كذلك، فأخبرني وسأحاول التوضيح.

أقوم حاليًا بتطوير موقع باستخدام ColdFusion ولدي قاعدة mod_rewrite لجعله يبدو كما لو أن الموقع يستخدم PHP.تتم معالجة أي طلبات لـ Index.php بواسطة Index.cfm (تقوم القاعدة بتعيين *.php إلى *.cfm).

وهذا يعمل بشكل رائع - حتى الآن، جيد جدًا.المشكلة هي أنني أريد إرجاع رمز الحالة 404 إذا تم طلب ملف Index.cfm (أو أي صفحة ColdFusion) مباشرةً.

إذا حاولت منع الوصول إلى ملفات *.cfm باستخدام mod_rewrite، فإنه يُرجع أيضًا 404 للطلبات إلى *.php.

أعتقد أنني قد أضطر إلى تغيير تكوين Apache الخاص بي بدلاً من استخدام .htaccess

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

المحلول

يمكنك استخدام ال S علامة لتخطي 404 القاعدة، مثل هذا:

RewriteEngine on

# Do not separate these two rules so long as the first has S=1
RewriteRule (.*)\.php$ $1.cfm [S=1]
RewriteRule \.cfm$ - [R=404]

إذا كنت تستخدم أيضًا Alias الخيار ثم يجب عليك أيضًا إضافة PT علَم.انظر وثائق mod_rewrite للتفاصيل.

نصائح أخرى

انشر القواعد التي لديك بالفعل كنقطة بداية حتى لا يضطر الأشخاص إلى إعادة إنشائها لمساعدتك.

أود أن أقترح اختبار [L] على القاعدة التي تقوم بتعيين ملفات .php إلى ملفات .cfm كأول شيء يجب تجربته.

يجب عليك استخدام مجموعتين مختلفتين من قواعد إعادة الكتابة، واحدة لـ .php، والأخرى لـ .chm وجعلهما حصريتين بشكل متبادل مع RewriteCond %{REQUEST_FILENAME}.واستفد من العلامة [L] كما اقترح jj33.

يمكنك الاحتفاظ بقواعدك في .htaccess.

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