تحتاج إلى جعل أحد أعيد كتابة أحدهم يلعب بشكل جيد مع فهم آخر ، ضعيف بشكل محرج لمبادئ الوقوف mod_rewrite في الطريق
-
01-10-2019 - |
سؤال
لدي النظام التالي:
Windows Server '03
IIS 6 (اطلاق النار علي)
PHP 5.2.14
WordPress 3.0.1
WPML 1.8.1.2
لقد أضفت WordPress إلى موقع عالي الحركة ، في دليل سنتصل به
للحصول على ميزات تشبه mod_rewrite ، أستخدم Helicon's ISAPI_Rewrite 3.1.0.76. أنا أستخدمه لتمكين الرابط الرابطين "Pretty" في تثبيت WordPress. القاعدة الفردية هي:
rewriterule ^/wordpress/(؟! index.php) (؟! wp) ([ ^.]*) $/wordpress/index.php/$1 [i ، l
ومع ذلك ، أحتاج إلى إضافة قاعدة أخرى ، ولم يثبت أي من استراتيجياتي المزدوجة للتفكير في ذلك من خلالها من خلالها.
موقعي هو ثنائي اللغة بالكامل. لا توجد صفحات ليست تحت واحدة من الدوران الفرعيين التاليين:
http: // thehost/en/ للغة الإنجليزية ، و
http: // thehost/sp/ للاسبانية.
هذه اتفاقية أهدف إلى الحفاظ عليها ، حتى لتثبيت WordPress. لدي حاليًا نسخة مخترقة إلى حد ما من WPML (WordPress Multilingual Plugin) تعمل ، وهي تعمل بحيث تكون جميع الصفحات والمنشورات - غير محددة للغة - إما / en / أو / sp / في عنوان URL. لقد دفعني هذا إلى الاعتقاد بأنني قريب - ربما يتم إعادة كتابة واحد فقط! - لجعل عناوين URL الخاصة بي WordPress تتوافق مع نفس اتفاقية عنوان URL مثل بقية موقعي. مشكلتي ، كما هو موضح ، هي أنه لا يمكنني تشغيلها.
لذا ، إذا كان لدي عنوان URL هذا في مكان ما في تثبيت WordPress الخاص بي:
http: // thehost/wordpress/en/2010/08/omg-this-post-is-in-English/
كيف يمكنني تحويله إلى
http: // thehost/en/wordpress/2010/08/omg-this-post-is-in-English/
في حين لا تفقد الرابط البرابطات في WordPress؟ لقد تمكنت من تبديل / en / إلى موقعه الصحيح (^/en/WordPress /(.*)/WordPress/en/$ 1) ، لكن لا يمكنني الحصول على قاعدتين للعب بشكل جيد معًا. هذا هو مشكلتي. حسنًا ، هذا وعدد قليل من الآخرين غير مناسبون لـ StackOverflow.com.
شكرا على وقتك.
المحلول
حاول تسلسل القواعد مع العلم "C". مثال:
RewriteRule ^/en/wordpress/(.*) /wordpress/en/$1 [C]
RewriteRule ^/wordpress/(?!index.php)(?!wp)([^.]*)$ /wordpress/index.php/$1 [I,L]