Đối với một trang web, tôi muốn sử dụng viết lại URL để cho phép dễ dàng truy cập vào các trang và lập chỉ mục tốt hơn.
Chẳng hạn, giả sử trang về Mozart là:
www.site.ext/composers/index.php?cmd=composers&id=123
Thay vì điều này, tôi muốn khách truy cập vào:
www.site.ext/Mozart
và truy cập cùng một trang.
Tôi cũng muốn các robot từ các công cụ tìm kiếm lập chỉ mục địa chỉ "thân thiện" và không biết địa chỉ thực "không thân thiện".
Cả hai .htaccess
tập tin dưới đây đều hoạt động và cung cấp quyền truy cập vào cùng một nội dung.
Trong trình duyệt, cái đầu tiên giữ url thân thiện trong thanh địa chỉ (nghĩa là www.site.ext/Mozart
),
#Options +FollowSymlinks
RewriteEngine On
RewriteBase /
#AllowOverride all
RewriteCond %{HTTP_HOST} .
RewriteRule ^Mozart$ composers/index.php?cmd=composers&id=123 [L]
trong khi R=301
tùy chọn thứ hai, với tùy chọn bổ sung , sẽ chuyển hướng vĩnh viễn đến địa chỉ "không thân thiện":
#Options +FollowSymlinks
RewriteEngine On
RewriteBase /
#AllowOverride all
RewriteCond %{HTTP_HOST} .
RewriteRule ^Mozart$ composers/index.php?cmd=composers&id=123 [R=301,L]
Vì tên danh mục sẽ không bao giờ thay đổi theo thời gian, tôi giả sử rằng trường hợp đầu tiên - chỉ viết lại mà không chuyển hướng rõ ràng - sẽ tốt hơn trong trường hợp này vì các công cụ tìm kiếm sẽ lưu trữ và hiển thị url thân thiện thay vì không thân thiện. Đây thực sự là trường hợp?
Liên quan đến các liên kết nội bộ trên trang web (ví dụ như neo trong các trang), tôi giả sử rằng tôi nên sử dụng PHP (hoặc tương đương) để tự động viết phiên bản URL thân thiện của chúng thay vì không thân thiện mặc định, để các công cụ tìm kiếm không lập chỉ mục URL không thân thiện.
Để bổ sung, để tránh lập chỉ mục các URL trùng lặp (trong trường hợp thiếu sót trong mã), tôi cho rằng sẽ là khôn ngoan khi đề cập trong mỗi trang URL thân thiện của nó dưới dạng liên kết chính tắc:
<head>
...
<link rel="canonical" href="http://www.site.ext/Mozart" />
...
</head>
Là giả định trên đúng hay có chống chỉ định?