استبعاد دليل في .htaccess باستخدام RedirectMatch لـ Wordpress
-
20-12-2019 - |
سؤال
لقد قمت بتغيير بنية الرابط الثابت الخاص بي في Wordpress من %year%/%months%/ إلى %postname%
لذلك قمت بإنشاء قواعد الاسم المستعار mod هذه في .htaccess ولكن لدي مشكلة:
RedirectMatch 301 /\d{4}/\d{2}/([^/]+)(/?)(.*)$ http://domainname.com/$1
تقوم القواعد أيضًا بإعادة توجيه الصور ضمن دليل محتوى wp، لذلك domainname.com/wp-content/uploads/2013/11/name.jpg يصبح domainname.com/name.jpg
لا أستطيع استخدام RewriteCond لأن RedirecMatch هذا هو mod_alias، أحاول استخدامه !^/(wp-content.*)$
ولكن لا يعمل.
كيف يمكنني حل؟هل من الأفضل استخدام RedirectMach أو RewriteRule (لم أغير الخادم)؟
هل يمكنك نشر أ ريكس أفضل?
شكرًا لك!
المحلول
ربما ينبغي عليك الالتزام باستخدام mod_rewrite بدلاً من mod_alias لأنه سيتعارض مع قواعد mod_rewrite الخاصة بـ Wordpress.يؤثر كل من mod_rewrite وmod_alias على نفس معرف URI للطلب في نقاط مختلفة في مسار معالجة ملف URL، لذلك قد ينتهي بك الأمر إلى إعادة التوجيه وإعادة الكتابة في نفس الوقت.
RewriteCond %{REQUEST_URI} !\.(jpeg|gif|png)$ [NC]
RewriteRule ^\d{4}/\d{2}/([^/]+?)(/?)(.*)$ http://domainname.com/$1 [L,R=301]
نصائح أخرى
يحاول ^
و $
:
RedirectMatch 301 ^/\d{4}/\d{2}/([^/]+)(/?)(.*)$ http://domainname.com/$1