การเปลี่ยนเส้นทาง URL ให้สั้นลงแบบทำเองที่ขัดแย้งกับการเปลี่ยนเส้นทาง 301


11

ฉันมีเว็บไซต์ที่เดิมสร้างขึ้นโดยใช้ ASP คลาสสิก ประมาณหนึ่งปีที่ผ่านมามันถูกเขียนใหม่ใน PHP ทำให้ส่วนขยายไฟล์มีการเปลี่ยนแปลงและบางหน้าถูกย้ายไปยังที่ตั้งใหม่ภายในเว็บไซต์ โดยปกติเราทำการเปลี่ยนเส้นทาง 301 จาก URL เก่าไปยัง URL ใหม่เพื่อให้ผู้ใช้และเครื่องมือค้นหาสามารถค้นหาตำแหน่งใหม่ได้ มันใช้งานได้ดี

นอกจากนี้เรายังสร้างเครื่องมือที่ช่วยให้เจ้าของไซต์สร้าง URL เล็ก ๆ ของตัวเองที่จะเปลี่ยนเส้นทางไปยังหน้าเว็บที่มีตัวแปรการติดตามแคมเปญ Google Analytics ซึ่งรวมอยู่ใน URL เพื่อให้พวกเขาสามารถติดตามแคมเปญและดูประสิทธิภาพของมัน

ปัญหาที่ฉันมีคือกฎการติดตามแคมเปญขัดแย้งกับการเปลี่ยนเส้นทาง 301 และป้องกันไม่ให้การเปลี่ยนเส้นทางทำงานได้เลย

นี่คือรหัสติดตามแคมเปญ:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

ในขณะที่คุณสามารถดูมันตรวจสอบเพื่อดูว่าไฟล์ที่มีอยู่และถ้ามันไม่ได้เปลี่ยนเส้นทางไปยังสคริปต์ติดตาม (tracking.php) ซึ่งจะใช้รหัสติดตามและเปลี่ยนเส้นทางไปยัง URL ที่เหมาะสมด้วยรหัสแคมเปญ Google Analytics ในแบบสอบถาม เชือก

รหัสนั้นทำให้กฎเช่นนี้ล้มเหลว:

redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php

มันสมเหตุสมผลที่จะไม่ทำงานร่วมกันตามกฎการติดตามบอกว่า "หากไม่พบไฟล์ที่เปลี่ยนเส้นทางไปยัง tracking.php" สิ่งที่ฉันต้องการคือการเปลี่ยนเส้นทาง 301 ให้ทำงานก่อนและหากไม่ตรงกันให้เปลี่ยนเส้นทางไปยังสคริปต์ติดตาม การวางกฎการติดตามด้านล่างการเปลี่ยนเส้นทาง 301 จะไม่เปลี่ยนผลลัพธ์

สามารถทำได้ผ่าน. htaccess หรือไม่ หรือฉันจะต้องแก้ไขสคริปต์ติดตามเพื่อให้ไม่พบแคมเปญตรวจสอบว่ารหัสแคมเปญนั้นเป็นหน้าเก่าที่ต้องเปลี่ยนเส้นทางหรือไม่และเปลี่ยนเส้นทาง 301 จากที่นั่นหรือไม่

คำตอบ:


5

ลองแปลงการmod_aliasเปลี่ยนเส้นทางของคุณเป็นmod_rewriteคำสั่ง


แก้ไข:ตัวอย่างด้านล่างถือว่าคุณได้แทนที่ไฟล์ ASP เก่าด้วยไฟล์ PHP ภายใต้เส้นทางเดียวกัน

RewriteEngine on

# *.asp -> *.php
RewriteRule (.*)\.asp$ /$1.php [R=301,L]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

... หรือคุณสามารถข้ามตัวแปรนิพจน์ทั่วไปและตั้งค่าการเปลี่ยนเส้นทางอย่างชัดเจนสำหรับแต่ละ URI เก่า:

RewriteRule about\.asp$ /about.php [R=301,L]
RewriteRule capabilities\.asp$ /capabilities.php [R=301,L]
RewriteRule capacitors\.asp$ /capacitors.php [R=301,L]

แก้ไข # 2:นี่คือตัวอย่างที่ควรครอบคลุมสถานการณ์ส่วนใหญ่ที่คุณจะพบ:

RewriteEngine on

# Changes to path + Query String Append
RewriteRule ^/path/to/old\.asp$ /path/to/new/about.php [R=301,L,QSA]

# *.asp -> *.php + Query String Append
RewriteRule ^(.*)\.asp$ $1.php [R=301,L,QSA]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

ฉันไม่แน่ใจว่าคุณหมายถึงอะไร คุณสามารถยกตัวอย่างตามสิ่งที่ฉันแสดงในคำถามของฉันได้ไหม
John Conde

ขอบคุณสำหรับการแก้ไข ทำให้รู้สึกตอนนี้ ฉันเดาว่าปัญหาสุดท้ายของฉันจะทำอย่างไรกับไฟล์ที่พา ธ เปลี่ยนไป? เป็นไปได้ไหม หรือฉันขอมากเกินไป
John Conde

คุณสามารถตั้งค่าการเปลี่ยนเส้นทางอย่างชัดเจนสำหรับไฟล์เหล่านั้น (หากเส้นทางส่วนใหญ่มีการเปลี่ยนแปลงคุณอาจใช้การเปลี่ยนเส้นทางอย่างชัดเจนสำหรับไฟล์ทั้งหมดเพื่อให้มั่นใจว่าการกำหนดค่านั้นจะคงไว้ได้)
danlefree

ฉันสงสัยว่าจะไม่มีการ[R=301,L]เปลี่ยนเส้นทางหลังจากแต่ละครั้งเป็นสิ่งที่ทำให้เกิดปัญหาของฉัน ให้ฉันลองทำดูแล้วฉันจะบอกให้คุณรู้ว่าเกิดอะไรขึ้น
John Conde

*.asp -> *.phpสัญลักษณ์แทนการทำงานที่ดี กฎแต่ละข้อสำหรับหน้าเว็บที่ไม่ได้เป็นการเปลี่ยนโดยตรงและมีสตริงการสืบค้นกำลังลำบาก แต่ดูเหมือนจะเป็นวิธีที่ถูกต้อง ถ้าฉันไม่สามารถแยกส่วนนั้นออกฉันจะเริ่มคำถามใหม่เกี่ยวกับมัน
John Conde

-1

ฉันจะย้อนกลับการเปลี่ยนเส้นทางและปล่อยให้มันเหมือนเดิม เปลี่ยนเส้นทางไซต์ใหม่ของคุณไปยังเว็บไซต์ OLD ของคุณ เว็บไซต์เก่าของคุณอาจได้รับประโยชน์จากการลิงก์ย้อนกลับอายุของเว็บไซต์และ SEO แล้ว มันจะเป็นความอัปยศที่จะสูญเสียเพียงเพื่อแทนที่ด้วยเว็บไซต์ใหม่ที่มีอันดับหน้าต่ำกว่า Google ลงโทษการเปลี่ยนเส้นทาง เว็บไซต์ใหม่ของคุณยังไม่มี SEO อยู่ดังนั้นจึงควรใช้การเปลี่ยนเส้นทางใน :)


ฉันไม่คิดว่าการถดถอยเป็นวิธีแก้ปัญหาที่ดี ไซต์ดั้งเดิมทำไม่ดีในทุก ๆ ด้าน เราทำให้ไซต์เร็วขึ้นใช้งานได้ง่ายขึ้นเข้าถึงได้มากขึ้นเป็นระเบียบและบำรุงรักษาได้ พวกเขาจะไม่สูญเสียสิ่งใดจากการเปลี่ยนเส้นทางเพราะเป็นเว็บไซต์เฉพาะและมีลิงก์ไม่กี่รายการที่จะเริ่มต้นด้วยและส่วนใหญ่ไปที่หน้าแรกซึ่งไม่ต้องการเปลี่ยนเส้นทาง ดังนั้นเราจึงไม่ต้องการกลับไปที่ไซต์เก่าเลยเนื่องจากเราไม่ได้อะไรและเสียไปมาก
John Conde

FYI, Google ไม่ได้ลงโทษสำหรับการเปลี่ยนเส้นทาง การเปลี่ยนเส้นทางปัญหาเดียวคือถ้าพวกเขาถูกล่ามโซ่ลึกเกินไปพวกเขาหยุดติดตามพวกเขาและ PR บางอย่างหายไปเมื่อทำ 301 แต่จำนวนเงินนั้นเล็กน้อยและคุ้มค่าเมื่อเทียบกับทางเลือกอื่นที่ไม่ได้ทำเลย
John Conde
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.