저는 CI를 사용하여 블로그 사이트를 구축하고 있습니다. HMVC plugin을 사용하고 있습니다. 내가 작업하고있는 모듈은 "/ journal"이다.CodeIgniter + mod_rewrite URI 줄이기
각 기사는/journal/article/ID/SLUG에서 액세스됩니다. 이것은 잘 작동하지만 mod_rewrite를 사용하여 URI를/journal/ID/SLUG로 줄이고 싶습니다. 테스트를 위해
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^journal/([0-9]+)(.*)$ index.php?/journal/article/$1$2 [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1
내가/저널/2를 사용하고 있습니다 : 여기
내 규칙입니다.나는 규칙이 일치하는 것을 알고있다. 예를 들어 리디렉션을 http://google.com으로 변경하면 실제로 Google로 리디렉션됩니다. 그러나 작성된대로 규칙을 사용하면 무시되는 것처럼 보이며 입력 한 내용에 관계없이 404가 표시됩니다.
나는 명백한 (또는 은밀한) 오류가 있습니까?
편집 : 질문을 게시 한 직후에 알아 냈습니다. 내 규칙은 참으로 정확하지만 설정/config.php 파일에서 다음 줄을 변경해야
$config['uri_protocol'] = 'AUTO';
에
$config['uri_protocol'] = 'PATH_INFO';
나는 변화가 않습니다 정확히 알고 주장하지 않거나 이유를 문제를 해결합니다. 아마도 누군가가 설명을 따를 수 있습니다.
CodeIgniter 파일 (system/core/URI.php) 줄 87 function _fetch_uri_string()을 보면 AUTO 설정에 대한 논리를 볼 수 있습니다. 즉, 명령 행 (CLI) 호출을 점검하고 PATH_INFO, QUERY_STRING 등을 점검하여 원하는 URI를 판별합니다. AUTO 이외에 뭔가를 지정하는 경향이 있으므로 행동이 정확히 무엇인지 알 수 있습니다. – stellablue