كيفية استخدام HTACCESS لإعادة توجيه كل مسند فرعي

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

  •  06-09-2019
  •  | 
  •  

سؤال

لقد مر بعض الوقت منذ أن أفسدت. لدي موقع، قل example.com، حيث أريد examball.com/ إعادة توجيه إلى example.com/collector.html إلا لعناوين URL تحت الدليل الفرعي example.com/Special، الذي أريد مواصلة العمل.

علي سبيل المثال:

  • examional.com/page.html يجب إعادة توجيه إلى example.com/collector.html
  • exampletems.com/foo/bar يجب إعادة توجيه إلى example.com/collector.html
  • example.com/special/page.html لا ينبغي إعادة توجيه

كنت أعتقد أن شيئا مثل

RedirectMatch 302 ^/[^(special)]/.* /collector.html
RedirectMatch 302 ^/[^(collector.html)/]* /collector.html

سوف تفعل الخدعة، ولكن لا يبدو أنها تعمل بالطريقة التي أريدها.

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

المحلول

ربما هذا؟ (يحتاج mod_rewrite)

RewriteEngine On
RewriteRule !^(special(/.*)?|collector\.html)$ collector.html [R,L]

نصائح أخرى

هذا يعمل بشكل جيد بالنسبة لي على Apache 2.2.13 حيث قمت بإعادة إنشاء هيكل الدليل الذي وصفته.

RedirectMatch 302 /(?!special)  http://www.example.com/collector.html

إن النمط الموجود في الأقواس يقول لا تتطابق إذا كان URI يحتوي على السلسلة "الخاصة".

أيضا عدم توفر إعادة كتابة وزارة الدفاع دائما وفي هذه الحالة ليست ضرورية.

جرب هذا:

RedirectMatch 302 /\/[^(special)]\/.+/ /collector.html 
RedirectMatch 302 /\/[^(collector\.html)]/ /collector.html

يمكن...؟

RewriteEngine on
RewriteRule ^(?!special) collector.html [R,NC]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top