وزارة الدفاع إعادة كتابة القواعد SKIP خطأ

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

  •  06-09-2019
  •  | 
  •  

سؤال

يعطيني الكود التالي خطأ في الخادم الداخلي ولا يمكنني تحديد السبب.

RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^.*$ - [S=1] 
RewriteRule ^(.*)$ html/$1.html

كل ما يجب القيام به هو اتخاذ عنوان URL

/test

وتحويلها

/html/test.html

وراء الكواليس، ولكن فقط إذا كانت البيئة هي الإنتاج، والتي تم تعيينها بواسطة Setenv

لا يوجد حل صحيح

نصائح أخرى

ربما إعادة كتابة وزارة الدفاع هي صدئة، ولكن إذا فهمت ذلك، يبدو أن ذلك يفعل عكس ما تقوله. إذا كان التطبيق هو الإنتاج، فلن يقوم بإعادة كتابة عنوان URL (ويتخطى القاعدة التي من شأنها أن). أنا لا أرى أي شيء سيؤدي إلى خطأ خادم داخلي.

للقيام بما تقوله، ستحتاج إلى شيء مثل:

RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} !=production
RewriteRule ^.*$ - [S=1] 
RewriteRule ^(.*)$ html/$1.html

إذا كنت لا تزال تواجه مشكلات، تحقق من سجل خطأ Apache الخاص بك، فهذا لديه أفضل معلومات عن خطأ الخادم الداخلي 500

إما أن تفعل ذلك مثل Todd Gardner قال أو إزالة القاعدة الزائدة وربط الشرط بالقاعدة الثانية:

RewriteEngine On
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^(.*)$ html/$1.html

بالإضافة إلى ذلك، سألتخدم هذه القاعدة بدلا من ذلك لتجنب العدوى:

RewriteCond %{ENV:APPLICATION} =production
RewriteRule !^html/ html%{REQUEST_URI}.html

قم بتشغيل REWRITE REWRITE للحصول على أخطاء مفيدة.

RewriteLog rewrite_log
ReWriteLogLevel 2

اضبط مستوى السجل للفساد.

يجب عليك وضع علامات اقتباس حول السلسلة لمقارنتها بشكل صحيح

RewriteCond %{ENV:APPLICATION} !="production"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top