2011-02-15 6 views
0

그러므로 내가 모바일 사이트로 이동 사용자를 리디렉션 할 필요가 다음 주소htaccess로 더블 재 작성 규칙

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ publicprofile.php?username=$1&%{QUERY_STRING} 

I 모바일 사이트를 개발 오전에 domain.com/username를 리디렉션합니다.

RewriteCond %{HTTP_USER_AGENT} ^.*iPhone.*$ 
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301] 
RewriteCond %{HTTP_USER_AGENT} ^.*BlackBerry.*$ 
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301] 
RewriteCond %{HTTP_USER_AGENT} ^.*Palm.*$ 
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301] 

가 어떻게 둘 다 동시에 작동해야합니까 리디렉션 내가 모바일에있는 코드인가?

답변

0

첫 번째 블록 앞에 두 번째 블록을 넣으면 좋을 것입니다.

두 번째 블록은 필요한 경우 헤더 리디렉션을 수행하므로 새로운 요청이 발생합니다. 그 후 내부 재 작성 규칙이 돌아갑니다.

0

것은 나 규칙을 최적화 허용 :

RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} (iphone|blackberry|palm|android) [NC] 
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ publicprofile.php?username=$1 [QSA,L] 

[NC] '대소 문자 구분'에 대한 서있다. [QSA]는 쿼리 문자열을 추가하는 것입니다. mod_rewrite tester에서 규칙을 테스트 할 수 있습니다.

+0

아마도 문법에 대해 조금 비판적이지만 '[NC]'는 '대소 문자를 구분하지 않음'이 아닌 '대소 문자 구분 없음'을 나타냅니다. 그것들은 동의어입니다 만, _acronym_을 확장 할 때는 대개 _acronym_의 각 문자가 무엇을 나타내는지를 보여주기 위해 정확해야합니다. – chown

+0

['[NE]'] (http://stackoverflow.com/a/6529394/712308) [또한] (http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_ne) 유용합니다. – hlcs