[php] codeigniter 경로에서 “index.php”를 제거하는 방법

"index.php"중앙 어딘가에있는 codeigniter의 모든 경로에서 튀어 나온 부분을 어떻게 제거 합니까? 나는 깨끗한 비를 원 index.php-fied URLs하십니까?



답변

Apache를 사용하는 경우 다음을 포함하는 루트 웹 디렉토리에 .htaccess 파일을 배치하십시오.

RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

또 다른 좋은 버전은 다음과 같습니다.

http://snipplr.com/view/5966/codeigniter-htaccess/


답변

index.php를 제거하는 데 큰 문제가있었습니다. 일반적으로 아래 .htaccess는 여러 서버에서 테스트되었으며 일반적으로 작동합니다.

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

<Files "index.php">
AcceptPathInfo On
</Files>  

운이 없다면 다음 단계는 구성 파일을 조정하는 것입니다. 다른 URI 프로토콜을 시도해보십시오.

| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO

   $config['uri_protocol']  = 'ORIG_PATH_INFO';

여전히 운이 없으면 하위 폴더를 포함하도록 다시 쓰기 규칙을 변경하십시오. 개발 서버 등에서 임시 URL을 사용하는 경우 종종 문제가됩니다.

RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]  

이 옵션을 가지고 놀기만하면됩니다. 또한 색인 파일이 다음으로 설정되어 있는지 확인하십시오.

$config['index_page'] = '';

행운을 빕니다!


답변

index.php 파일과 함께 응용 프로그램 루트 디렉터리에 .htaccess 파일이 있습니다. (htaccess 확장자가 올바른지 확인하십시오. Bz htaccess.txt가 작동하지 않았습니다.)

.htaccess 파일에 다음 규칙을 추가합니다.

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

그런 다음 application / config / config.php 파일에서 다음 줄을 찾으십시오.

$config['index_page'] = 'index.php';

아래와 같이 변수를 비워 둡니다.

$config['index_page'] = '';

그게 나에게 효과적이었습니다.

더 이상 작동하지 않으면 다음 변수를 이러한 매개 변수 ( ‘AUTO’, ‘PATH_INFO’, ‘QUERY_STRING’, ‘REQUEST_URI’및 ‘ORIG_PATH_INFO’)로 하나씩 바꾸십시오.

$config['uri_protocol'] = 'AUTO';


답변

system\application\config\config.php파일을 살펴보면 다음과 같은 변수가 있습니다.index_page

다음과 같이 보일 것입니다.

$config['index_page'] = "index.php";

그것을 변경

$config['index_page'] = "";

그런 다음 언급했듯이 .htaccess파일에 다시 쓰기 규칙을 추가해야 합니다.

참고 : CodeIgniter v2에서이 파일은 시스템 폴더에서 application\config\config.php


답변

위의 모든 방법이 실패했으며 AllowOverride None/ etc / apache2 / sites-available / default의 가상 호스트 파일에서 AllowOverride All 로 변경하지 않았다는 것을 알았습니다.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride All    <---- replace None with All
    </Directory>
    <Directory /var/www >
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All   <---  replace None with All
            Order allow,deny
            allow from all
    </Directory>

     ...


답변

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /codeigniter/index.php/$0 [PT,L]

RewriteRule. * index.php / $ 0 [PT, L]을 프로젝트 폴더 이름 “codeigniter”로 변경 한 후 작동합니다. 귀하의 지원에 감사드립니다.


답변

1 단계 => 응용 프로그램 및 시스템 폴더가있는 루트 폴더에 .htaccess 파일을 저장합니다.

2 단계 => yourdomain.com/project/와 같은 하위 폴더를 사용하는 웹 경로 인 경우 htaccess 파일에서 다음 코드를 사용합니다.

RewriteEngine on
RewriteBase    /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]

루트 폴더를 사용하는 웹 경로-yourdomain.com-다음 코드를 htaccess 파일에 사용하십시오.

RewriteEngine on
RewriteBase    /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]