Thứ Năm, 29 tháng 9, 2016

Hướng dẫn sử dụng friendly URLs trong Yii Framework 2.0

Định dạng URL là một điều rất quan trọng đối với SEO.Người dùng bình thường có thể không chú ý đến URL của bạn, tuy nhiên các công cụ tìm kiếm căn cứ vào url để đánh giá mức độ phù hợp giữa  các nội dung trong trang và các URL, và điều này ảnh hướng rất lớn tới kết quả xếp hạng của bạn khi được tìm kiếm bởi một từ khóa liên quan.Trong bài viết này mình sẽ Hướng dẫn sử dụng friendly URLs trong Yii Framework 2.0 để mọi người có thể thay đổi url của mình cho thân thiện với Google hơn.
Thông thường trong Yii Framework, chúng ta thường dùng URL có dạng index.php?r=site/index hay index.php?r=site/about, khi chạy ứng dụng thì hệ thống sẽ tự động tìm controller và view tương ứng.
Trong bài này chúng ta sẽ tìm hiểu các để đổi đường dẫn trên thành  site/index và site/about, điều này sẽ tạo ra một đường dẫn thân thiên hơn và tối ưu tốt hơn cho SEO.
Để sử dụng pretty(friendly) urls, chúng ta cần cấu hình trong Yii2 như sau :
Đầu tiên, chúng ta phải đảm bảo rằng tất cả các request đều được rewrite tới web/index.php
Trên Linux chúng ta có thể thay đổi cấu hình server sử dụng Apache và thêm file .htaccess vào thư mục root của Yii2 nếu nó chưa tồn tại.
File .htaccess cho phép chúng ta có thể kế thừa các cấu hình của webserver

LƯU Ý

Trong môi trường Linux, tên tập tin bắt đầu với dấu chấm cho chúng ta biết rằng tập tin này là ẩn.
Nội dung file .htaccess cũng tương tự như trong Yii1.1
RewriteEngine on

# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . web/index.php
Nếu app root là /var/www/vhosts/yiiapp/basic, thì chúng ta sẽ thêm file .htaccess vào /var/www/vhosts/yiiapp/basic.
Dòng đầu tiên sẽ kích hoạt RewriteEngine của web server; sau đó, ở dòng 2 và dòng 3, script sẽ kiểm tra các requests không tồn tại file hoặc folder, và cuối dùng request sẽ được rewritten tới web/index.php.
Với cấu hình trên thì toàn bộ request không tồn tại files hoặc đường dẫn thư mục đều được rewriten tới web/index.php

Lưu ý

Chúng ta cũng có thể cấu hình các rule rewrite ở trong apache thay vì cấu hình ở .htaccess nếu chúng ta có quyền truy cập vào file cấu hình ở Apache
Nếu cấu hình .htaccess đã bị ignored, hãy kiểm tra AllowOverride và thiết lập như sau :
<Directory /var/www/path/to/folder>
  AllowOverride All
</Directory>
Không được set nó thành None.
Điều cuối cùng cần làm bây giờ là để cấu hình Yii2 để có thể handle một friendly URL
Chúng ta hãy mở config / web.php và thêm những nội dung sau trong vào phần components :
'urlManager' => [
 'enablePrettyUrl' => true,
],
Sau khi thêm thuộc tính enablePrettyUrl, chúng ta đã cấu hình urlManager để cho phép friendly URL.
URL index.php?r=site/index giờ đã trở thành /index.php/site/index và index.php?r=site/about trở thành/index.php/site/about.
khi sử dụng thuộc tính enablePrettyUrl, chúng ta sẽ có vẫn có tiền tố index.php pử url. Tuy nhiên chúng ta có thể bỏ nó đi để làm ngắn url hơn nữa
Để xóa index.php prefix, chúng ta sử dụng một thuộc tính khác là property showScriptName.
Nếu ta set showScriptName là false, thì sẽ xóa được index.php, lúc này đường dẫn thành : site/about và site/index
Ngoài ra còn 1 thuộc tính quan trọng nữa là : enableStrictParsing, mình sẽ nói ở bài sau :)


EmoticonEmoticon