2009-02-17 22 views
7

Các thực URL mà ứng dụng của tôi sử dụng là:PHP Rewrite Rules

http://site.com/search.php?search=iPhone 

nhưng tôi muốn nó có thể để đạt được cùng với

http://site.com/iPhone 

Tôi không có kinh nghiệm về viết lại quy tắc, làm thế nào tôi có thể thiết lập này?

Giải pháp đã hoạt động nhưng URL mới được hiển thị trong thanh địa chỉ. Tôi nghĩ nó đã có thể thiết lập này lên để nó xuất hiện như thể vị trí trang là

http://site.com/iPhone

mà không thay đổi để hiển thị

http://site.com/search.php?search=iPhone 

Đây có phải là có thể? Cảm ơn.

Trả lời

10

Tạo một tập tin gọi là .htaccess trong thư mục gốc của trang web của bạn và đặt nó vào trong đó.

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase/

RewriteRule ^(.*) search.php?search=$1 [R] 

Nên thực hiện thủ thuật.

Tuy nhiên, tôi khuyên bạn nên làm cho nó cụ thể hơn một chút, vì vậy có thể yêu cầu người dùng thư mục tìm kiếm trong url của bạn. ví dụ như thay vì sử dụng mysite.com/IPhone mysite.com/search/IPhone mà sẽ làm việc như

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase/

RewriteRule ^search/(.*) search.php?search=$1 [R] 

này làm cho nó dễ dàng hơn để có các trang bình thường mà Arnt chuyển hướng, chẳng hạn như về cho chúng tôi hoặc một trang web cơ bản.

Như Chris nói, đây không phải là PHP mà Apache thực hiện điều này và liệu nó có hoạt động hay không phụ thuộc vào thiết lập lưu trữ của bạn.

5

Bạn cần phải xác định một cái gì đó như thế này trong tập tin .htaccess của bạn:

RewriteEngine on 
RewriteRule /(.*) /search.php?search=$1 

Kiểm tra thêm:

+0

Tại sao regex của bạn chỉ cố gắng khớp số? Chỉ cần tò mò kể từ ví dụ của ông được sử dụng "iPhone", không phải là một số. –

+0

oops, đã được khắc phục ngay bây giờ ... – CMS

3

Quy tắc viết lại không phải là một phần của PHP theo như tôi biết, nhưng Apache (cụ thể là mod_rewrite) hoặc bất kỳ máy chủ nào bạn đang sử dụng. Đối với Apache, bạn cần trên máy chủ để có một tập tin gọi là .htaccess, và đưa vào đó một cái gì đó như:

RewriteEngine on 
RewriteRule ^(\w+)/?$ /index.php?search=$1 

^(\w+)/?$ là một biểu thức chính quy - nó phù hợp với bất kỳ từ nào trong tổng số 1 hoặc nhiều ký tự, theo sau là một / lẽ . Vì vậy, nó thay đổi site.com/iPhone thành site.com/index.php?search=iPhone. Âm thanh về quyền?

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