2012-05-31 4 views
1

사람들이 htaccess에 문제가 있습니다. codeigniter를 프레임 워크로 사용하고 있습니다. 코드 메신저 현재 사용 은 다음과 같습니다htaccess 리디렉션에서 잘못된 값이 전송되었습니다.

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9_-]+)\.example\.(.*+) [NC] 
RewriteCond %{REQUEST_URI} /index([0-9]+) [NC] 
RewriteRule .* /index.php/main_controller/method/%1 [QSA,L] 

지금은 싶은 일을 할 '방법'이라는 내 'main_controller'컨트롤러의 메소드의 값으로 % 1을 보내는 것입니다. 문제 : 들어오는 값 ([a-zA-Z0-9 _-] +)을 보내는 대신 % 2를 보내는 경우 ([0-9] +) 들어오는 값을 전송합니다. URL이

somevalue.example.com/index33

경우 .... 내가 (예를 들어, [A-ZA-Z0-9 _-] +), 말에오고 값을 보내 싶어

이 대신 33를 보내는 것 somevalue

+0

당신의 마지막 RewriteCond가 $ 1/% 1은 (이후)/index (여기) 뒤에있는 내용을 덮어 씁니다 – Gavin

답변

1
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{REQUEST_URI} /index([0-9]+) [NC] 
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.(.*+) [NC] 
RewriteRule .* /index.php/main_controller/method/%1 [QSA,L] 
+0

감사 답장을 보내 주셔서 감사합니다. Nick, 이제 저는 somevalue를 얻을 수 있지만 % 2을 (를) 얻을 수 없습니다. 33. 나는 둘 다 필요하다 : (즉,^([^.] +) \. example ...과 ([0-9] +) 0-9] +) 필수 항목입니다 :( – Falcon

1
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.(.*+) [NC] 
RewriteRule /index([0-9]+) /index.php/main_controller/method/%1/$1 [QSA,L] 

그래서 어리석은 나를. URI에서 변수를 가져 오려면 REQUEST_URI에 넣지 않아도됩니다. RewriteCond의 변수는 % 1에서 가져오고 RewriteRule/index ([0 -9] +) $ 1에 도착했다. 희망도 다른 사람들을 돕기 위해

관련 문제