2012-03-29 10 views
0

이전에는 모든 단일 컨트롤러에 대해 새 규칙을 만들어이 문제를 해결했습니다. 그래서 여기에 우리가 간다; 기본적으로 url은 아래와 같습니다.CodeIgniter .htaccess/Mod_rewrite

http://www.url.com/index.php/controller/method/parameters 

이 항목으로 변경하고 싶습니다.

http://www.url.com/controller/method/parameter1/parameter2/parameter3/etc... 

때때로 나는 3 개 또는 4 개의 매개 변수가 있지만 때로는 하나도 없거나 하나이기 때문에 매개 변수 부분이 문제입니다. 나는 (() 메소드가 존재하는 인덱스 이후) 작동 단지 컨트롤러를 요청하는 경우

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

:하지만,

는 지금은 (그렇지 않으면 내가 게시하지 것이다 작동하지 않는)이이 사용자 정의 방법 및 매개 변수가 작동하지 않습니다.

그런 다음 config/routes.php에도 경로를 추가해야합니까? 이전에는 사용 된 모든 조합에 대해 사용자 지정 경로와 규칙을 추가하여이 문제를 해결했습니다.

Google에서 며칠 동안 성공하지 못했습니다. 게시물을 놓친 경우 알려주세요.

미리 감사드립니다.

당신은 키 => 값 쌍을 얻을 $this->uri->uri_to_assoc()을 사용할 수 있습니다, 그리고 http://www.url.com/controller/method/param1_key/param1_value/param2_key/param2_value/etc...

같은 구조를 사용

답변

1
RewriteRule ^(.*)$ index.php?$1 [L] 

.

+0

경로를 추가 하시겠습니까? 내가 그 규칙을 가지고 모든 컨트롤러/방법/매개 변수에 대해 개별적으로 경로를 추가함으로써 작동하는 것처럼 보입니다. – Roel

+0

예, 있습니다. (: num)은 데이터베이스에 매핑 된 정수 (id)이고, (: any())는 데이터베이스에 매핑 된 정수 (id)가 될 것입니다 :'$ route [ 'controller/(: num)'] = "controller/index/$ 1/$ 2")는 슬러그를 의미합니다. – Mudshark

+0

참고 : 'index'이외의 컨트롤러 메소드가있는 URL에는이 스키마와 함께 맞춤 경로가 필요하지 않습니다. 'example.com/controller/view/1/abc-de'는 맞춤 경로가 필요없이 바로 사용할 수 있습니다. 그럼'$ this-> uri-> segment (3)'및'$ this-> uri-> segment (4) '를 통해 매개 변수에 액세스 할 것입니다. – Mudshark

1

가장 좋은 방법은 당신의 URL 구조를 변경하는 것입니다,이 구성의 최소 금액이 필요합니다 연관 배열에서.

여기 문서를 참조하십시오 : http://codeigniter.com/user_guide/libraries/uri.html 설정 파일에 $config['uri_protocol'] = 'REQUEST_URI';을 사용하여, (대신 /의주의?) 나를 위해 트릭을 수행