الحصول على أباتشي إلى تعديل صفحات الويب ثابتة على الطاير

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

سؤال

لقد تم تجريب woopra.com أداة تحليلات ويب.الأمر الذي يتطلب قطعة من شفرة جافا سكريبت إضافة إلى كل صفحة على وظيفة.هذا من السهل بما فيه الكفاية مع أكثر المواقع الديناميكية مع العالمي رؤوس أو تذييلات الصفحات ولكن ليس تماما صفحات html ثابتة.

حاولت عمل جولة ذلك باستخدام مزيج من أباتشي يعيد كتابة مباحث أمن الدولة إلى "التفاف" html ثابتة مع رمز المطلوبة.على سبيل المثال...

وإجراء التغييرات التالية إلى اباتشي التكوين

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !=test.shtml
    RewriteCond %{IS_SUBREQ}  false 
    RewriteRule (.*)\.html test.shtml?$1.html

الاختبار.shtml ملف يحتوي على...

    <script type="text/javascript">
       var XXXXid = 'xxxxxxx';
    </script>
    <script src="http://xxxx.woopra.com/xx/xxx.js"></script>

    <!--#set var="page" value="$QUERY_STRING" -->
    <!--#include virtual= $page -->

كانت الفكرة أن طلب القادمة في

    /abc.html

سيتم توجيهك إلى

    /test.shtml?abc.html

the shtml ثم تشمل الملف الأصلي في صفحة استجابة.

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

شكرا

بيتر

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

المحلول

أعتقد أن mod_filter_ext هو وحدة كنت تبحث عن.يمكنك كتابة قصيرة Perl على سبيل المثال لإدراج رمز شبيبة في صفحات وتسجيل ذلك إلى عملية صفحات HTML:

while (<>) {
    s/<html>/\Q<script>....\E/;
    print $_;
}

يمكنك حتى استخدام شيء من هذا القبيل sed إلى إجراء تبديل.

نصائح أخرى

إذا كانت صفحات ثابتة, لماذا قمت بتغيير لهم على الطاير بدلا من تجهيزها في جميع الصفحات على الموقع ، إضافة قطعة من requiered جافا سكريبت إلى كل واحد منهم ؟ هذا هو بسيط و ربما أكثر كفاءة (ربما لديك أكثر من صفحة من صفحات للتغيير)

هذا يمكن القيام به الكثير من طريقة.أود أن أقترح صغيرة بيرل إلى أن مضمنة الاستبدال.

طيب الطريقة أعلاه المشكلة الأكبر هو كسر الخاص بك html صحة من خلال وضع علامة النصي خارج <html> tags

أود أن نتفق مع الآخرين على ما قبل عملية دهس ملفات html الخاص بك مثل sed/awk النصي

هيريس سريع سبيل المثال {افتراض السيناريو جزء يمكن أن تضاف قبل </head> وأن </head> هو في بداية السطر

#!/bin/bash

cd /var/webserver/whatever/

grep -r '<\/head>' */*|grep "^.*\.html*:" >/var/tmp/tempfile.txt
((lines = $(wc -l /var/tmp/dom-tempfile.txt | awk '{print $1}')))
if [ $lines -gt 0 ]
then
 while read line; do
 sed 's/<script type="text\/javascript"> var XXXXid = "xxxxxxx"; <\/script><script src="http:\/\/xxxx\.woopra\.com\/xx\/xxx\.js"><\/script><\/head>/^<\/head>/g' $line>/var/tmp/tempfile.htm
 mv /var/tmp/tempfile.htm $line
 done < <(sed 's/\(^.*\.html*\):.*$/\1/' /var/tmp/tempfile.txt)
fi
exit 0

قد يكون خطأ في بناء الجملة منذ $page لا يتم تضمينها في الاقتباس ، ومع ذلك اثنين من الأسباب الرئيسية أن هذا لا يتم ما يلي:

  • وتشمل الظاهري أن مسار بدءا من / في المثال الخاص بك سلسلة الاستعلام يجب أن تكون /abc.html لا abc.html
  • كتابة القاعدة ينبغي أن تبدأ مع المسار كذلك ، حتى كتابة القاعدة يجب أن يكون

    RewriteRule ^(.*)\.html /test.shtml?$1.html
    
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top