2012-01-02 3 views
1

저는 이미 기존 응용 프로그램의 iPhone 버전에서 작업 해 왔습니다.mod_rewrite 및 iPhone 리디렉션

Google은 더 나은 검색 엔진 최적화 (SEO) 및 방문자 수를 늘리기 위해 몇 가지 다시 쓰기 규칙을 사용합니다. 예.

RewriteCond %{HTTP_USER_AGENT} iPhone 
RewriteCond %{REQUEST_URI} !^/m/ 
RewriteRule .* /m/ [R] 

모바일 사이트가 단지 www.site.com/m/

에 위치 : http://www.site.com/index.php?job=4ef187d6e66b7 다음으로, 우리는 또한 우리의 모바일 사이트로 모든 아이폰 사용자를 리디렉션하는 규칙을 사용 http://www.site.com/jobs/4ef187d6e66b7

로 다시 작성 내가 http://www.site.com/jobs/4ef187d6e66b7로 향할 때이 http://www.site.com/m/jobs/4ef187d6e66b7

해야합니다 동안

, 나는 사람을 리디렉션 여전히 일의 일부를 유지하는 방법이 있나요, http://www.site.com/m/?job=4ef187d6e66b7로 리디렉션지고있어 기존 규칙들? 나는이 규칙을 추가하는 시도,하지만 그

RewriteRule ^m/jobs/([^/]+) m/index.php?job=$1 [NC] 

실행되지 않았습니다 당신은 아이폰을 두어야 전체 htaccess로

Options +FollowSymlinks 
RewriteEngine on 

RewriteRule ^jobs/([^/]+) index.php?job=$1 [NC] 

RewriteCond %{HTTP_USER_AGENT} iPhone 
RewriteCond %{REQUEST_URI} !^/m/ 
RewriteRule .* /m/ [R] 

답변

1

입니다 먼저 리디렉션 한 다음 '마지막'을 표시합니다. 그렇게하면 모바일 리디렉션이 다른 리디렉션보다 우선합니다.

RewriteCond %{HTTP_USER_AGENT} iPhone 
RewriteCond %{REQUEST_URI} !^/m/ 
RewriteRule (.*) /m/$1 [R,L] 

RewriteRule ^(m/|)jobs/([^/]+) index.php?job=$2 [NC] 

원본 경로가 리디렉션에 포함되어야합니다 (세 번째 줄에 표시).

마지막 다시 쓰기 규칙은 /m/jobs/xxx/jobs/xxx이 일치합니다.

+0

처음에는 제대로 작동하는 것처럼 보였지만 URL은 올바르게 다시 작성되지 않았습니다. 하지만 어떤 이유로 작동하지 않는 것 같습니다 : _ 요청한 URL/m/jobs/4ef9a591edc33을이 서버에서 찾을 수 없습니다 ._ –

+0

즉 다시 쓰기가 작동 중입니다! 이제 iPhone이 **/m /...**로 리디렉션됩니다. 이제'/ m/... 'URL을 올바르게 처리해야합니다. 마지막 다시 쓰기 규칙에 따라 잡으려면 적절하게 수정해야합니다. 나는 이것을 반영하기 위해 나의 대답을 편집 할 것이다. – bouke

+0

고마워, 다시 쓰기가 실제로 작동합니다. 저는 지금 다른 문제에 직면하고 있습니다. http://www.site.com/jobs/4ef9a591edc33으로 이동하면 http://www.site.com/m/index로 리디렉션됩니다. php? job = 4ef9a591edc33 올바른 URL은 맞지만 http://www.site.com/m/jobs/4ef9a591edc33으로 나타나야합니다. –

관련 문제