كيفية استخدام HTACCESS لإعادة توجيه كل مسند فرعي
سؤال
لقد مر بعض الوقت منذ أن أفسدت. لدي موقع، قل 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]
لا تنتمي إلى StackOverflow