سؤال

بحثًا عن المزيد URL url المستخدم, ، كيف يمكنني تحقيق كل من ما يلي ، باستخدام أنيقة فقط .htaccess؟

/de/somepage
الذهاب الى /somepage?ln=de

/ZH-CN/SOMEPAGE#7
الذهاب الى /somepage?ln=zh-CN#7

ملخص:
/[لغة]/[pagefilenamewithoutextension] [مرساة اختيارية#] [رقم من 0-9

يجب تحميل (دون تغيير عنوان URL)
/[pagefilenamewithoutextension]؟ ln = [لغة] [مرساة اختيارية#] [رقم من 0-9

تحديث ، بعد الحل المقدم: 1. يجب الوصول إلى استثناء /Zh-Cn /SomePage كـ /cn /somepage 2. لا يتم تحميل الصور المصغرة التي تم إنشاؤها الآن مثل:
img src = "imgcpu؟ src = someimage.jpg & w = 25 & h = 25 & c = f & f = bw"

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

المحلول

RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L]

لا تحتاج إلى فعل أي شيء للشظايا (على سبيل المثال: #7). لم يتم إرسالها إلى الخادم. تم التعامل معها بالكامل من قبل المتصفح.

تحديث:اذا أنت حقًا تريد التعامل مع ZH-CN كحالة خاصة ، يمكنك أن تفعل شيئًا مثل:

RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L]
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L]
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]

نصائح أخرى

أود أن أقترح ما يلي -

RewriteEngine on
RewriteRule ^([a-z][a-z])/([a-zA-Z]+) /$2?ln=$1
RewriteRule ^([a-z][a-z])/([a-zA-Z]+#([0-9])+) /$2?ln=$1$3

القاعدة الأولى تعتني بعناوين URL مثل /de /somepage. يجب أن تكون اللغة بطول حرفين بالضبط ويجب أن تحتوي فقط على أحرف إلى Z.

القاعدة الثانية تعتني بعناوين URL مثل /المملكة المتحدة /SomePage#7.

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