كيف يمكنني تحويل قاعدة إعادة كتابة Apache إلى قاعدة Tuckey UrlRewRiteFilter؟

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

سؤال

لدي قاعدة إعادة كتابة Apache التالية

<IfModule rewrite_module>
     RewriteEngine on
     RewriteMap tolowercase int:tolower
     RewriteCond $2 [A-Z] 
     RewriteRule ^(.*)/(.*).html$ $1/${tolowercase:$2}.html [R=301,L]
</IfModule>

هذا يغير هذا:

http://localhost.localdomain.com/FooBarBaz.html

الى هذا:

http://localhost.localdomain.com/foobarbaz.html

أرغب في نقله إلى tuckey.org هذا URL إعادة كتابة مرشح.

ما هي القاعدة المكافئة التي يمكنني استخدامها لجعل عنوان URL صغير؟ أنا مهتم بشكل خاص بكيفية تشكيل عنصر الحالة.

هذا هو أول قطع لي في القاعدة ، لكنه لا يعمل ، حتى بدون الشرط:

<rule>
    <name>Force URL filenames to lower case</name>
    <from>^(.*)/(.*).html$</from>
    <to type="permanent-redirect" last="true">$1/${lower:$2}.html</to>
</rule>
هل كانت مفيدة؟

المحلول

هذا ما استقرت عليه في النهاية:

<rule match-type="regex">
    <name>Force URL filenames to lower case</name>
    <condition type="request-uri" casesensitive="false" operator="notequal">^.*/a4j.*$</condition>
    <condition type="request-uri" casesensitive="true">^.*/.*[A-Z].*.html$</condition>
    <from>^(.*)/(.*).html$</from>
    <to type="permanent-redirect" last="true">$1/${lower:$2}.html</to>
</rule>

الشرط الأول هو منع القاعدة من التشغيل على طلبات A4J Ajax.

نصائح أخرى

شون ،

لا تحتاج إلى شرط للقيام بذلك (باستثناء تجاهل مكالمات Ajax). الأهم من ذلك ، عنصر الحالة ليس لديه سمة حساسة, ، فقط من العنصر يفعل. بمجرد أن أدركت ذلك ، تمكنت من كتابة القاعدة على النحو التالي:

<rule match-type="regex">  
    <note>Force URL to lower case</note>
    <from casesensitive="true">^.*[A-Z].*$</from>
    <to type="permanent-redirect" last="true">${lower:$0}</to>  
</rule>

ملاحظة: يعمل هذا لطلب المسار بأكمله (وإن لم يكن QueryString).

لقد تعثرت عبر رسالتك لأن قاعدة تصفية URL Rewrite ، لقد تم إعطائي والتي كانت تشبهك كثيرًا لم تكن تعمل. من خلال الكثير من التجربة والخطأ ، وجدت في النهاية أن المشكلة لم تكن مع التعبير العادي على الإطلاق. كان ذلك كنت مطابقة ولكن كان ليس حساسة للحالة ، لذلك كنت أحصل على إعادة توجيه لانهائي.

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