it-swarm.asia

. htaccess 301 إعادة توجيه صفحة واحدة

بعد إعادة تصميم الموقع ، لديّ بضع صفحات تحتاج إلى إعادة توجيه. كل شيء يبقى على نفس المجال ، فقط بضعة أشياء تمت إعادة تنظيمها و/أو إعادة تسميتها. هم من النموذج:

/contact.php

هو الآن:

/contact-us.php

باستخدام ملف htaccess ، أضفت هذا السطر ، وهو السطر الذي أجده موصى به أكثر:

RedirectMatch 301 /contact.php /contact-us.php

هذا في الغالب جيد - إنه يقوم بالمهمة - المشكلة هي أنه يعيد التوجيه:

  • /team1/contact.php
  • /non-existant-folder/contact.php

هل هناك طريقة لتحديد أنني أريد فقط إعادة توجيه contact.php في الجذر؟

55
Dan

RedirectMatch يستخدم تعبيرًا عاديًا متطابقًا مع مسار URL. والتعبير العادي /contact.php يعني فقط أي مسار URL يحتوي على /contact.php ولكن ليس فقط أي مسار URL يكون بالضبط /contact.php. لذا استخدم نقاط الارتساء لبداية ونهاية السلسلة (^ و $):

RedirectMatch 301 ^/contact\.php$ /contact-us.php
83
Gumbo

هذا ينبغي أن تفعل ذلك

RedirectPermanent /contact.php /contact-us.php 
21
duckyflip
redirect 301 /contact.php /contact-us.php

لا فائدة من استخدام قاعدة إعادة التوجيه ثم عليك كتابة الروابط بحيث تكون مطابقة تمامًا. إذا لم تقم بتضمين ذلك ، فلست مضطرًا إلى الاستبعاد! مجرد استخدام إعادة التوجيه دون تطابق ثم استخدام الروابط بشكل طبيعي

8
Jon

يمكنك أيضًا استخدام RewriteRule إذا أردت القدرة على مطابقة القوالب وإعادة توجيه عناوين url.

0
Ryall

إذا كنت تفضل استخدام أبسط حل ممكن لمشكلة ، فبديل RedirectMatch هو ، التوجيه الأساسي إعادة التوجيه التوجيه.

لا يستخدم مطابقة الأنماط ولذا فهو أكثر وضوحًا وأسهل على الآخرين لفهمها.

أي

<IfModule mod_alias.c>

#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php

</IfModule>

يجب ترحيل سلاسل الاستعلام لأن المستندات تقول:

سيتم إلحاق معلومات المسار الإضافية التي تتجاوز مسار URL المطابق بعنوان URL الهدف.

0
JW.