تجميل URL باستخدام .htaccess
-
29-09-2019 - |
سؤال
بحثًا عن المزيد 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.