2012-06-14 5 views
7

Tôi có hai trang html trên máy chủ web của tôiTôi làm cách nào để phân phối các trang dành cho thiết bị di động và máy tính để bàn riêng biệt từ cùng một URI bằng cách sử dụng .htaccess?

www.example.com/desktop.html 

www.example.com/mobile.html 

Về nguyên tắc, nội dung và chức năng của cả hai là như nhau, mặc dù đánh dấu là khác nhau (mobile.html là xây dựng trên jquery di động).

Điều tôi muốn làm là phân phát tất cả khách truy cập trên thiết bị di động www.example.com/mobile.html nếu họ di động, www.example.com/desktop.html nếu không nhưng giữ www.example.com trong thanh địa chỉ bất kể thiết bị. Ngoài ra, khi khách truy cập ở trên một trong hai trang, tôi muốn cung cấp liên kết đến phiên bản khác và lưu trữ thêm tùy chọn này trong cookie và phân phát theo mặc định nếu/khi họ quay lại trong các lần truy cập tiếp theo.

Tôi làm cách nào để thực hiện việc này?

Tôi cũng muốn nhân cơ hội này nêu rõ mức độ tôi yêu tràn ngăn xếp, nó đã giải quyết được rất nhiều vấn đề mà tôi gặp phải.

Cảm ơn

+0

http://www.google.com/search?q=site:stackoverflow.com+htaccess+mobile => http://stackoverflow.com/questions/3680463/mobile-redirect-using-htaccess –

+2

Joshua, Bạn có thể muốn xem bài viết này: http://www.alistapart.com/articles/responsive-web-design/ Điều này có thể giúp bạn tiết kiệm một số cơn đau đầu. –

Trả lời

5

Thêm phần này vào tập tin .htaccess của bạn:

RewriteEngine On 

RewriteCond %{HTTP_USER_AGENT} (android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino) [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\)|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC] 
RewriteRule ^$ /mobile.html [L] 
RewriteRule ^$ /desktop.html [L] 

tôi vướng các %{HTTP_USER_AGENT} trận đấu từ đó liên kết trong comment Rob W của. Bạn có thể muốn sửa đổi nó hoặc cố gắng tìm một cái hoàn chỉnh hơn trên google ở ​​đâu đó. Về cơ bản, điều này sẽ kiểm tra xem tác nhân người dùng có phải là điện thoại di động hay không và nếu có, hãy ghi lại yêu cầu / nội bộ vào /mobile.html, nếu không, nó sẽ ghi lại nó thành /desktop.html. Vì đây là ghi đè nội bộ, thanh Vị trí URL trên trình duyệt vẫn giữ nguyên là www.example.com.

+2

Tôi chưa thử và thực hiện điều này nhưng nếu nó hoạt động tôi nghĩ rằng tôi có thể yêu bạn – Joshua

+0

@Joshua Đã làm việc? –

+2

Bạn có thích thắng không? Tìm hiểu lần sau, trên * StackOverflow. * – Aerovistae