복붙노트

URL에서 index.php 제거 - Codeigniter 2

PHP

URL에서 index.php 제거 - Codeigniter 2

Codeigniter의 URL에서 index.php를 제거하는 데 문제가 있습니다. 나는 Codeigniter 1.7을 가진 몇몇 웹 사이트를 만들었고 내가 사용한 .htaccess 코드는 2에서 작동하지 않는다.

나는

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ ./index.php/$1 [L]

</IfModule>

또한 RewriteBase / in없이 시도했다.

나는 $ config [ 'uri_protocol']을 REQUEST_URI와 QUERY_STRING으로 변경했습니다.

나는 $ config를 설정했다 [ 'index_page'] = "";

파일 구조는 192.168.0.130/(site)/이므로 서버의 루트로 되돌아 가야하며 index.php 파일을 찾을 수 없습니다.

내가 만든 컨트롤러는 모두 192.168.0.130/(site)/index.php/testcontroller에 넣을 수 있습니다.

고맙습니다.

이것이 전에 물었다면 사과드립니다 - 나는 보았고 내가 볼 수있는 것을 시도했습니다.

편집하다:

또한 기본 폴더를 다음과 같이 변경했다고 덧붙여 야합니다.

신청

CI-2.0

index.php

index.php의 경로가 올바른 것으로 변경했습니다.

해결법

  1. ==============================

    1.게시 한 첫 번째 코드 블록을 시도해보십시오. /index.php 대신 /(site)/index.php (obv는 사이트 폴더의 이름이 무엇이든간에 (사이트)를 사용하십시오)를 사용해보십시오.

    게시 한 첫 번째 코드 블록을 시도해보십시오. /index.php 대신 /(site)/index.php (obv는 사이트 폴더의 이름이 무엇이든간에 (사이트)를 사용하십시오)를 사용해보십시오.

  2. ==============================

    2.이것은 나를 위해 일했다 :

    이것은 나를 위해 일했다 :

    이것은 내 htaccess 파일입니다.

    Options -Indexes
    Options +FollowSymLinks
    

    RewriteEngine On
    RewriteBase /
    
    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ index.php?/$1 [L]
    
    #When your application folder isn't in the system folder
    
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    
    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
    

    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin   
    
    ErrorDocument 404 /index.php
    

    출처:

    http://taggedzi.com/articles/display/codeigniter-2-htaccess-and-friendly-urls

  3. ==============================

    3.

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^(.*)$ index.php?/$1 [L]
    

    이 정도는 루트 폴더에만 필요합니다. .htaccess에 이것을 추가하십시오.

  4. ==============================

    4.다른 사람들과이 CodeIgniter URL 문서의 모든 지침을 따른 후에, 서버를 다시 시작하는 것을 잊지 마십시오. 나는 그 일을 잊어 버렸고 다른 모든 해결책을 시도해 보았습니다.

    다른 사람들과이 CodeIgniter URL 문서의 모든 지침을 따른 후에, 서버를 다시 시작하는 것을 잊지 마십시오. 나는 그 일을 잊어 버렸고 다른 모든 해결책을 시도해 보았습니다.

  5. ==============================

    5.나는 이틀 동안이 일을했다. 가능한 모든 것을 시도했다. 나는 방금 다음과 같은 것이 필요하다고 나왔다.

    나는 이틀 동안이 일을했다. 가능한 모든 것을 시도했다. 나는 방금 다음과 같은 것이 필요하다고 나왔다.

    유형:

    sudo nano /etc/apache2/sites-available/default
    

    AllowOverride None을 AllowOverride All로 변경하십시오. - .htaccess 파일에 대한 액세스 권한을 부여합니다.

    <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
    </Directory>
    

    또한 Apache에서 mod 재 작성을 활성화하십시오.

    http://stackoverflow.com/questions/3131236/how-do-you-enable-mod-rewrite
    

    희망이 도움이, 마리오

  6. ==============================

    6..htaccess에 아래 코드를 추가하기 만하면됩니다.

    .htaccess에 아래 코드를 추가하기 만하면됩니다.

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    
  7. ==============================

    7.1) 루트 폴더에 .htaccess 파일을 만듭니다.

    1) 루트 폴더에 .htaccess 파일을 만듭니다.

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

    2) 응용 프로그램 폴더에서 application / config / config.php 파일을 편집합니다.

    $config['base_url'] = 'http://localhost/projectName';
    
     $config['index_page'] = '';         // remove index.php 
    

    나는 그것이 당신을 위해 일할 것이라는 점을 희망한다.

  8. from https://stackoverflow.com/questions/5155333/remove-index-php-from-url-codeigniter-2 by cc-by-sa and MIT license