2016-02-05 3 views
3

Я знаю, что этот вопрос задан несколько раз. Однако я до сих пор не смог избавиться от url index.php. Это мешает мне напрямую обращаться к моему контроллеру.CodeIgniter удаление index.php с URL

Я в настоящее время использую CodeIgniter 2.2.2.
И следующий мой .htaccess файл:

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

приложение/конфигурация:

// Find the below code 

$config['uri_protocol'] = "AUTO" 

// Replace it as 

$config['uri_protocol'] = "REQUEST_URI" 

Любая идея? Спасибо заранее за ваше время.

+0

Вы используете wamp или xampp? – user4419336

+1

Я использую wamp прямо сейчас, но в настоящее время я хотел бы иметь доступ к нему и в производстве. (Prod в настоящее время работает linux apache) –

ответ

-1

Наконец-то исправлена ​​проблема. Я хотел бы поделиться своим ответом на всех вас. настоящее время я использую макинтош, мой переименовать мой файл .htaccess в htaccess.txt и имел следующий код внутри HTAccess: RewriteEngine На

#Removes access to the system folder by users. 
#Additionally this will allow you to create a System.php controller, 
#previously this would not have been possible. 
#'system' can be replaced if you have renamed your system folder. 
RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ index.php?/$1 [L] 

#When your application folder isn't in the system folder 
#This snippet prevents user access to the application folder 
#Submitted by: Fabdrol 
#Rename 'application' to your applications folder name. 
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 %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 


</IfModule> 

<IfModule !mod_rewrite.c> 
    # 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 

Затем убедитесь, что Apache читает HTAccess .txt файл, делая это:

  1. раскомментируйте следующую строку в ваш httpd.conf

  2. Зайдите внутрь в файл дополнительные/HTTPD-default.conf и изменить эту строку кода: AccessFileName .htaccess к AccessFileName htaccess.txt

  3. Перезапустите Apache сервер

  4. Внутри вашей конфигурации, убедитесь, что оставить «base_url» пустой (индексная страница все еще может быть там, не имеет значения). И $ config ['uri_protocol'] = 'REQUEST_URI';

Надеюсь, это может помочь другим!

1

Использование ниже кода в .htacess

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] 
+2

Спасибо за ваш ответ! –

1

попробовать это ..

RewriteEngine on 
RewriteBase/
# Hide the application and system directories by redirecting the request to index.php 
RewriteRule ^(application|system|\.svn) index.php/$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [QSA,L] 
1

я до того была такая же проблема. это то, что я сделал

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

затем в config.php и удалить index.php

$config['index_page'] = 'index.php'; 
//change it to 
$config['index_page'] = ''; 
0

Это работало для меня.

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

Если вы используете wamp, убедитесь, что у вас включена перезапись модема apache.

Этот Htaccess хорош для WAMP или XAMPP

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

Убедитесь, что он находится на главной директории.

$config['index_page'] = ''; 
0

на ваш .htaccess

RewriteEngine On 

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

и $config['index_page'] = '';

работал для меня

1

От CI User Manual:

Index.php файл будет включен по умолчанию в y наши URL-адреса.

Пример:

example.com/index.php/controller 

Как вы можете изменить?

Вы можете использовать правило перезаписи в .htaccess для удаления индекса.PHP из URL-адресов

Пример из User Guide:

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

Использование «негативный» метод, в котором все перенаправлены, за исключением указанных элементов.

Одна последняя вещь, чтобы вы используете index_page в пустом месте приложения/Config/config.php:

$config['index_page'] = ''; 

В прошлом, если вы по-прежнему сталкиваются с изменением выпуска uri_protocol AUTO в REQUEST_URI.

$config['uri_protocol'] = "REQUEST_URI"; 
+1

Codeigniter Doc теперь находится здесь http://www.codeigniter.com/docs – user4419336

+1

@ wolfgang1983 получил его bro – devpro

+1

Я смотрел на это руководство раньше, не помогло. –

Смежные вопросы