2013-01-12 9 views
7

내 디렉토리 구조는 폴더 CI 아래의 모든 폴더 즉, 응용 프로그램, 시스템과 함께/var/www/CI /입니다. CI 아래에 .htaccess 파일을 만들었습니다.CodeIgniter URL에서 index.php를 제거 할 수 없습니다.

다음은 .htacess의 코드입니다.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond $1 !^(index\.php|public|images|robots\.txt|css) 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

여전히 localhost/CI/blog는 404 오류를 제공합니다. 이 규칙이 잘못된 곳으로 안내 할 사람이 있습니까?

$config['index_page'] = ''; 

는 또한이 작업을 수행 : 다음과 같이

답변

26

또한

$config['index_page'] = ''; 

mod_rewrite를는 httpd.conf 파일에서 활성화되어 있는지 확인합니다 .. 당신은 다음과 같이 구성 파일을 설정해야합니다, 처음에는 다음과 같은

을 시도하십시오 그런 다음 응용 프로그램 폴더가 아닌 프로젝트 루트 폴더에있는 .htaccess 파일을 다음 코드로 덮어 씁니다.

RewriteEngine on 
RewriteCond $1 !^(index\.php|public|\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 
+0

그것은 매력처럼 나를 위해 일했습니다! 감사! – JunaidKirkire

+0

당신은 가장 환영합니다 –

+0

나는이 블로그를 던져서이 답변을 찾고 있습니다. 당신은 나에게 올바른 답을 줄뿐만 아니라 무엇을해야할지 분명히 밝힌 유일한 사람입니다. 정말 고맙습니다! –

3

은 당신의 application/config/config.php 파일에서 확인이 설정되어 있는지 확인

일반적으로 당신은 자신의 디렉토리에 CI를 넣어 두지 않는
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond $1 !^CI/(index\.php|public|images|robots\.txt|css) 
    RewriteRule ^CI/(.*)$ CI/index.php/$1 [L] 
</IfModule> 

applicationsystem 루트 폴더에 있습니다.

+0

위의 작업을 수행 했는데도 작동하지 않습니다. 다른 장소도 구성해야합니까? – JunaidKirkire

+0

감사합니다. 감사합니다. – JunaidKirkire

3

오버라이드가 허용되도록 Apache 구성을 확인하십시오. 이 None으로 설정되어 있으면 다시 쓰지 않습니다. 당신의 httpd.conf (NOT 당신의 .htaccess)에 다음을 추가

<Directory "/"> 
    AllowOverride All 
</Directory> 

가 여전히 작동하지 않는 경우 알려줘 문제가 해결됩니다.

+0

내가 틀렸다면 정정 해주십시오.하지만 httpd.conf가 아닌가요? 또한 내 httpd.conf 파일이 비어 있습니다. – JunaidKirkire

+0

시간 내 주셔서 감사합니다. 감사합니다. – JunaidKirkire

+0

죄송합니다, 저의 실수는 ... httpd.conf입니다! 나는 대답을 고쳤다. 이 솔루션이 도움이되기를 바랍니다. – ashiina

1

다음 단계를 사용하십시오.
1. .htaccess 파일을 문서 루트 [myroot_folder/.htaccess]에 작성하십시오.
2.application/config/config.php의 설정 파일을 열고 다음

$config['index_page'] = ''; 

이 기본 URL에서 index.php을 제거 할
그것은 지금 $config['base_url']= 'http://localhost/myroot_folder/';

-$config['base_url']= 'http://localhost/myroot_folder/index.php';
변화가 .htaccess 파일을 열고 다음을 추가하는 경우 코드 블록

DirectoryIndex index.php 
RewriteEngine on 
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 
-1

당신은 모든 일을하지만 당신은 그렇게하는 것이,이 시도하지 않은 경우 :

변경을 에 AllowOverride 없음에 AllowOverride /등/아파치가/사이트-가능/기본에서 가상 호스트 파일의 모든

Details here

1

이 작동합니다. 하지만,

  1. 아파치의 설치 폴더 안에있는 C:\wamp\bin\apache\apache2.4.9\conf 폴더 아래 httpd.conf 파일을 찾고, 당신의 mod_rewrite를가 활성화되어 있는지 확인하십시오.
  2. httpd.conf 파일에서 #LoadModule rewrite_module modules/mod_rewrite.so 파일을 찾으십시오. 키워드 "mod_rewrite"를 검색하면 쉽게 찾을 수 있습니다.
  3. 행의 시작 부분에서 #을 제거하십시오. #은 해당 행이 주석 처리되었음을 나타냄니다.
  4. 아파치 서버을 다시 시작하십시오.
  5. phpinfo()을 수행하는 동안로드 된 모듈 섹션에서 mod_rewrite을 볼 수 있습니다.
0
1) make .htaccess file and put this code 

    RewriteEngine on 
    RewriteCond $1 !^(index\.php|resources|robots\.txt) 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

2) change 

$config['index_page'] = ''; 
remove index.php present in config.php file 

3) rewrite on from your server