2012-01-04 24 views
13

Tôi cần tạo url thân thiện với SEO cho trang web của mình. Tôi phát hiện ra tôi có thể sử dụng .htaccess để viết lại chúng. Vì vậy, tôi cố gắng này:.htaccess newbie issue sử dụng mod_rewrite

> http://www.domain.com/page/1/mypage 
> http://www.domain.com/user/2/myuser 
> http://www.domain.com/help/3/myhelp 

Bây giờ tôi đang mắc kẹt với một quy tắc chung và tôi không hiểu Ant để chuyển hướng lưu lượng dựa vào tên của trang:

tôi sử dụng:

RewriteEngine ON 
RewriteRule ^(.*)$ page.php?page=$1 

Sau đó, trong PHP của tôi tôi không nhận được trang một cách chính xác, tôi nhận được các tập tin đó là sai.

Làm cách nào để khắc phục sự cố này?

+0

Đối với một khởi đầu tốt, kiểm tra công cụ trực tuyến này http://www.webconfs.com/url-rewriting-tool.php để xem cách các URL của bạn có thể được quản lý. Nó sẽ tạo ra bạn .htaccess mã là tốt. – Arfeen

Trả lời

17

Đây là những gì bạn cần làm:

RewriteEngine On 
RewriteBase/
RewriteRule ^([a-z_\-]+)/([0-9]+)/([a-z_\-]+)/?$ page.php?page=$1&id=$2&name=$3 [NC,L] 

NC (hoặc nocase) Làm cho case-insensitive kiểm tra, A = a;

L (hoặc cuối cùng) Quy tắc cuối cùng. Dừng quá trình viết lại ở đây và không áp dụng bất kỳ quy tắc viết lại nào khác;

Bạn có thể nhận được thêm thông tin tại http://httpd.apache.org/docs/current/mod/mod_rewrite.html

+0

tôi thấy sự khác biệt, hãy để tôi thử, tại sao nc và l? – Marty

+3

'NC' là * không có trường hợp *, tức là trường hợp không nhạy cảm. 'L' là * last *, có nghĩa là xử lý quy tắc sẽ dừng lại nếu quy tắc này khớp với –

+0

tôi đã cập nhật câu trả lời của mình –

Các vấn đề liên quan