هتكس rewritecond كتابة مستوى حالة مجلد 2 = معلومات

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

  •  05-07-2019
  •  | 
  •  

سؤال

وكنت أرغب في وضع .htaccess لإعادة كتابة:

example.com/bla/info/

إلى

example.com/info/index.php?q=bla

example.com/bla/info/txt/

إلى

example.com/info/index.php?q=bla&t=txt

وكنت أرغب في المتصفح لا يزال لعرض:

example.com/bla/info/txt/

لم أكن أريد كتابة في إعادة كتابة مستوى 2، مثل:

example.com/bla/xxx/ 

أو

example.com/ccc/zzz/aaa/

ولكن

example.com/silly/info/ 

وستعمل كذلك

example.com/strange/info/mytxt/

هل هذا معقول؟

وأي مساعدة؟

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

المحلول

إذا كنت بدء أسلوبك مع ^ ووضع حد لها مع $، فإن الحكم لا تنطبق إلا إذا كان نتيجة سلسلة كاملة.

RewriteRule   ^/bla/info/$      /info/index.php?q=bla
RewriteRule   ^/bla/info/txt/$  /info/index.php?q=bla&t=txt

إذا كنت تستخدم لا تستخدم الخيار [R]، فإن URL هو مبين في متصفح يكون مهما أدخلها المستخدم.

هل تحاول جعل هذا التعيين؟ إذا كان الأمر كذلك، يمكنك استخدام التعابير المنطقية نوع مطابقة واستبدال متغير. لجعل 'بلوخ "تطابق أي سلسلة تصل إلى الخط المائل المقبل (/)، استخدم

([^/]+)

وفي نمط ومرجع له مع $ 1 في استبدال الخاص بك.

RewriteRule ^/([^/]+)/info/$          /info/index.php?q=$1
RewriteRule ^/([^/]+)/info/([^/]+)/$  /info/index.php?q=$1&t=$2

وأوصي أباتشي صفحات الويب عن mod_rewrite و للحصول على مزيد من المعلومات .

[تحرير. حددت القواعد لا تتضمن اسم المضيف في نمط، كما برزت الملصق الأصلي خارج.]

و- منتديات BMB

نصائح أخرى

وحصلت لي في الطريق الصحيح.

وانتهى بي الأمر مع شيء من هذا القبيل:

RewriteRule ^([^/\.]+)/info/?$ example/info/index.php?q=$1 [L]

وشكرا جزيلا

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