2011-11-03 5 views
1

몇 가지 .htaccess 다시 쓰기 규칙에 대한 전문가의 도움을 찾고 있습니다. 여기에 제가 성취하려고하는 것이 있습니다 :복잡한 .htaccess 규칙

 
#) User requests     Displayed to User As   Actual Request to Server 
1) www.example.com*     example.com*     example.com* 
2) example.com      example.com      example.com/index.php 
3) example.com/index.php   example.com      example.com/index.php 
4) example.com/mypage    example.com/mypage    example.com/index.php?p=mypage 
5) m.example.com     m.example.com     example.com/mobile.php 
6) m.example.com/index.php   m.example.com     example.com/mobile.php 
7) m.example.com/mobile.php   m.example.com     example.com/mobile.php 
8) m.example.com/mypage    m.example.com/mypage   example.com/mobile.php?p=mypage 

여기까지 제가 지금까지 해왔습니다. 1 호선, 3 호선, 4 호선을 관리합니다. 이동식 물건을 추가하자 마자 길을 잃습니다.

 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [R=301,L] 

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] 
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L] 

RewriteRule ^([a-z\-]+)$ /index.php?p=$1 [L] 

나는 이것을 알아 내려고 너무 많은 시간을 보냈으며, 막 다른 골목들로 계속 뛰고 있습니다. 나는 그 부분을 계속 작동 시키지만 다른 부분들은 깨뜨린다. 어떤 도움을 주시면 감사하겠습니다.

감사합니다.

답변

0

모바일 규칙을 먼저 추가해야 우연히 다른 규칙이 먼저 트리거되지 않는다고 생각합니다.

RewriteEngine On 

# 6,7 
RewriteCond %{HTTP_HOST} ^m\. [NC] 
RewriteRule ^\/(index|mobile)\.php$ http://m.example.com/ [R=301,L] 

# 5,8 
RewriteCond %{HTTP_HOST} ^m\. [NC] 
RewriteRule ^([a-z\-]+)$ /mobile.php?p=$1 [L] 

# 1 
RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteRule (.*) http://example.com$1 [R=301,L] 

# 3 (and example.com/mobile.php) 
RewriteRule ^\/(index|mobile)\.php$ http://example.com/ [R=301,L] 

# 2,4 
RewriteRule ^\/([a-z\-]+)$ /index.php?p=$1 [L]