2013-08-31 47 views
8

Mục tiêu của tôi là URL này:.htaccess ghi đè URL bằng dấu chấm hỏi "?"

component/users/?view=registration 

Để:

registration.html 

các .htaccess là trong mysite thư mục của trang web.

tôi đã cố gắng này:

RewriteBase /mysite 
RewriteRule ^component/users/?view=registration$ registration.html$ [R=301,L] 

Nhưng tôi không làm việc ...

Khi tôi cố gắng này:

RewriteRule ^component/users/_view=registration$ registration.html$ [R=301,L] 

nó hoạt động rất tốt.

Vậy làm cách nào tôi có thể khắc phục vấn đề này với dấu chấm hỏi. Tôi đã đọc thats nó không phải là một phần của URL (phụ của nó). Tôi đã đọc rằng tôi phải sử dụng một cái gì đó như querystring, nhưng tôi đã không thực sự hiểu cú pháp.

Có thể ai đó có thể viết giải pháp cho vấn đề này? Sẽ tuyệt vời =)

Trả lời

21

Bạn cần phải sử dụng %{QUERY_STRING} để nắm bắt các dữ liệu chuỗi truy vấn:

RewriteCond %{QUERY_STRING} ^view=(.*)$ 
RewriteRule ^component/users/?$ %1.html? [R=301,L] 

Nguyên tắc/điều kiện trên sẽ lấy giá trị của dạng xem chuỗi truy vấn và sử dụng nó để tạo thành chuyển hướng của bạn nếu đường dẫn component/users khớp với nhau.

+1

cảm ơn câu trả lời nhưng nó không hoạt động đây là những gì tôi nhận được: http: //localhost/mysite/registration.html ? view = đăng ký khi tôi gõ: http: // localhost/mysite thành phần/người dùng/view = đăng ký/ làm bạn có một ý tưởng như thế nào điều này có thể được gỡ bỏ – Bardock

+1

awesome? "view = đăng ký?"?! Cảm ơn bạn bro. Nó hoạt động ngay bây giờ: D – Bardock

-3
RewriteRule ^component/users/\?view=registration$ registration.html$ [R=301,L] 

Bạn cần \ bởi vì? là một phần của cụm từ thông dụng. Để sử dụng nó như là một chuỗi u cần phải thoát khỏi nó với một \

Linktip: http://ole.michelsen.dk/tools/regex.html

+4

không hoạt động. Nó vẫn chuyển hướng tôi đến localhost/mysite/component/users /? View = registration :( – Bardock

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