وزارة الدفاع إعادة كتابة القواعد SKIP خطأ
-
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"