أحاول إعداد عدد من عمليات إعادة التوجيه 301 باستخدام ملف htaccess. لسبب ما لا يعمل بالنسبة لي.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN 301 Redirects
Redirect 301 /about-us/ http://www.newsite.com/new-page/about-us/
# END 301 Redirects
هل يمكن لأي شخص إلقاء الضوء على سبب عدم عمل هذا لموقع Wordpress الخاص بي؟
بشكل عام ، من الأفضل معالجة إعادة التوجيه على الجانب PHP. (على افتراض يتم تنفيذه من قبل المطور شبه المختصة) وهو أكثر مرونة ويستخدم أقل الحمل.
على وجه التحديد للسؤال ، ستتولى مجموعة قواعد وورد التعامل مع جميع عناوين URL ، لقاعدتك متأخرة للغاية ويجب عليك تحريكها لتكون قبل قواعد وورد.
حاول استخدام الكود التالي:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^old-page-name(/.*)?$ https://www.myurl.com/new-page-name/ [L,R=301,NC]
RewriteRule ^another-old-page(/.*)?$ https://www.myurl.com/another-new-page/ [L,R=301,NC]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
بالنسبة لعمليات إعادة التوجيه مثل هذه ، أوصي باستخدام هذا المكون الإضافي: https://wordpress.org/plugins/redirection/ إنه سهل الاستخدام ويدعم حتى إعادة توجيه REGEX المتقدمة.
أنا شخصيا استخدمت ملف htaccess فقط لعمليات إعادة التوجيه الأكثر تقدمًا والمجال ، مثل: canonicalization domain.
ولكن إذا كنت تريد فعل ذلك إعادة التوجيه في ملف htaccess ، فإليك كيفية القيام بذلك:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN 301 Redirects
Redirect 301 /about-us/ http://www.newsite.com/new-page/about-us/
# END 301 Redirects
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress