2016-08-04 3 views
0

나는 웹 사이트가 laravel 4 인 것을 기반으로합니다. 사용자가 모바일 장치로 모바일 버전에 액세스 할 때 모바일 버전으로 리디렉션하고 싶습니다. 리디렉션 중 URL을 경로로 유지하고 싶습니다.URL 경로를 유지하여 .htaccess를 사용하여 데스크톱 웹 사이트를 모바일 웹 사이트로 리디렉션하는 방법은 무엇입니까?

예를 들어, 나는 2 개의 웹 사이트가 있습니다 : 1) site.com2) m.site.com입니다. 사용자가 mysite.com/en/contact에게 모바일 장치를 통해에 액세스 할 때 내가 원하는 것은, 그들은 m.mysite.com/en/contact로 리디렉션해야합니다. .htaccess으로 어떻게 할 수 있습니까?

나는이를 위해 많은 것을 봤습니다. 그러나 해결책은 나를 위해 작동하지 않았다.

답변

0

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^example.\com$ 
RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile.+firefox|netfront|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce|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|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(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|yas\-|your|zeto|zte\-) [NC] 
RewriteRule^http://m.example.com%{REQUEST_URI} [QSA,P] 
두 사이트가 같은 서버에있는 경우

, 아파치 버전에 따라 (detectmobilebrowsers에서 감지 정규식)이 어쩌면 성능 현명한 향상시킬 수있다.

+0

두산, 내 대답을 확인해 주시겠습니까? – Someone

-1

당신은 단순히 USER_AGENT를 확인하고 다음과 같이 따라 리디렉션 할 수 있습니다 :

<If "%{HTTP_USER_AGENT} =~ /(android|ios)/"> 
Redirect ^en/contact$ http://example.com/en/contact 
</If> 

당신이 /.../ 사이 usee 것은 가능한 모든 user_agents을 추가해야하는 정규 표현식이다 당신은 당신의 서버를 질의 할 것으로 예상됩니다. htaccess로 소개

:

htaccess로 재 작성의 일종하지 않습니다/창고 리디렉션. 이것은 아파치 기본 설정 파일에 대한 관리 권한이없는 사용자를위한 것입니다. 그것은 오버 헤드를 추가하고 재 작성을 더 복잡하게 만듭니다.

관련 문제