Chuyển hướng rút ngắn URL tự chế xung đột với 301 chuyển hướng


11

Tôi có một trang web ban đầu được xây dựng bằng cách sử dụng ASP cổ điển. Khoảng một năm trước, nó đã được viết lại bằng PHP. Điều này khiến phần mở rộng tệp thay đổi và một số trang đã được chuyển đến vị trí mới trong trang web. Đương nhiên, chúng tôi đã thực hiện chuyển hướng 301 từ các URL cũ sang các URL mới để người dùng và công cụ tìm kiếm của họ có thể tìm thấy vị trí mới của họ. Điều này hoạt động tốt.

Chúng tôi cũng đã xây dựng cho họ một công cụ cho phép chủ sở hữu trang web tạo các URL nhỏ của riêng họ sẽ chuyển hướng đến một trang có các biến theo dõi chiến dịch Google Analytics có trong URL để họ có thể theo dõi chiến dịch và xem cách thức hoạt động của chiến dịch.

Vấn đề tôi có là các quy tắc theo dõi chiến dịch mâu thuẫn với các chuyển hướng 301 và ngăn chặn các chuyển hướng hoạt động.

Đây là mã theo dõi chiến dịch:

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

Như bạn có thể thấy nó kiểm tra xem một tệp có tồn tại không và nếu nó không chuyển hướng đến tập lệnh theo dõi (theo dõi.php), sau đó sẽ lấy mã theo dõi và chuyển hướng đến URL thích hợp với mã chiến dịch Google Analytics trong truy vấn chuỗi.

Mã đó khiến các quy tắc như thế này thất bại:

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

Điều này có nghĩa là điều này không hoạt động cùng nhau như các quy tắc theo dõi nói, "nếu một tệp không được tìm thấy chuyển hướng đến theo dõi.php". Những gì tôi cần là cho các chuyển hướng 301 chạy trước và nếu không có cái nào khớp với nhau, thì hãy chuyển hướng đến tập lệnh theo dõi. Đặt quy tắc theo dõi bên dưới chuyển hướng 301 không thay đổi kết quả.

Điều này có thể được thực hiện thông qua .htaccess? Hoặc tôi sẽ cần sửa đổi tập lệnh theo dõi để nếu không tìm thấy chiến dịch, nó sẽ kiểm tra xem ID chiến dịch có thực sự là một trang cũ cần được chuyển hướng và sau đó thực hiện chuyển hướng 301 từ đó không?

Câu trả lời:


5

Hãy thử chuyển đổi chuyển mod_aliashướng của bạn thành mod_rewritechỉ thị.


Chỉnh sửa: Ví dụ bên dưới giả định rằng bạn đã thay thế các tệp ASP cũ bằng các tệp PHP trong cùng một đường dẫn.

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]

... hoặc bạn có thể bỏ qua biến biểu thức chính quy và đặt chuyển hướng rõ ràng cho từng URI cũ:

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

Chỉnh sửa # 2: Đây là một ví dụ bao gồm hầu hết các tình huống bạn sẽ gặp:

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]

Tôi không chắc ý của bạn là gì. Bạn có thể đưa ra một ví dụ dựa trên những gì tôi đã thể hiện trong câu hỏi của tôi?
John Conde

Cảm ơn đã chỉnh sửa. Làm cho ý nghĩa bây giờ. Tôi đoán vấn đề cuối cùng của tôi sẽ là phải làm gì với các tệp có đường dẫn đã thay đổi? Điều đó có thể không? Hay tôi hỏi quá nhiều?
John Conde

Bạn có thể đặt chuyển hướng rõ ràng cho các tệp đó (nếu hầu hết các đường dẫn đã thay đổi, bạn cũng có thể sử dụng chuyển hướng rõ ràng cho tất cả các tệp để đảm bảo cấu hình có thể duy trì được).
danlefree

Tôi nghi ngờ không có [R=301,L]sau mỗi lần chuyển hướng là nguyên nhân gây ra vấn đề của tôi. Hãy để tôi thử điều đó và tôi sẽ cho bạn biết những gì xảy ra.
John Conde

Các *.asp -> *.phpký tự đại diện hoạt động tuyệt vời. Các quy tắc riêng cho các trang không chuyển đổi trực tiếp và có chuỗi truy vấn đang gây rắc rối. Nhưng điều này có vẻ như đúng cách để đi. Nếu tôi không thể sắp xếp phần đó ra, tôi sẽ bắt đầu một câu hỏi mới về nó.
John Conde

-1

Tôi sẽ đảo ngược chuyển hướng và để nó như ban đầu. Chuyển hướng trang web MỚI của bạn đến trang web OLD của bạn. Trang web OLD của bạn có thể đã được hưởng lợi từ liên kết ngược, tuổi của trang web và SEO. Sẽ là một sự xấu hổ khi mất nó chỉ để thay thế nó bằng một trang web mới hơn với thứ hạng trang thấp hơn. Google trừng phạt chuyển hướng. Trang web MỚI của bạn sẽ không có bất kỳ SEO nào trên đó vì vậy tốt hơn là sử dụng chuyển hướng trên đó :)


Tôi không nghĩ hồi quy là một giải pháp tốt. Các trang web ban đầu được thực hiện kém trong mọi cách. Chúng tôi làm cho trang web nhanh hơn, có thể sử dụng hơn, có thể truy cập, có tổ chức và có thể bảo trì. Họ sẽ không mất bất cứ thứ gì từ các chuyển hướng bởi vì đó là một trang web thích hợp và có một vài liên kết để bắt đầu và hầu hết đã đi đến trang chủ không yêu cầu chuyển hướng. Vì vậy, chúng tôi chắc chắn không muốn quay lại trang web cũ vì chúng tôi không thu được gì và mất rất nhiều.
John Conde

FYI, Google không trừng phạt các chuyển hướng. Vấn đề duy nhất chuyển hướng là nếu họ bị xiềng xích quá sâu, họ sẽ ngừng theo dõi họ và một số PR bị mất khi thực hiện 301 nhưng số tiền này không đáng kể và đáng giá so với các giải pháp thay thế không thực hiện.
John Conde
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.