Проблемы CodeIgniter Mod_Rewrite - PullRequest
0 голосов
/ 04 марта 2012

Возникли проблемы с удалением index.php? с URL:

http://localhost/index.php?/reset_password

С файлом htaccess:

# Customized error messages.
ErrorDocument 404 /index.php
# Set the default handler.
DirectoryIndex index.php
# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>

Настройки CI:

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

Я посмотрел на другие темы здесь с похожими проблемами, но ни один из их файлов htaccess не работает. Я пропустил настройку?

Ответы [ 2 ]

5 голосов
/ 04 марта 2012

Я никогда не видел эту настройку .htaccess раньше, хотя она может работать. Я использовал это для каждого проекта CI, который я сделал, попробуйте:

<IfModule mod_rewrite.c>

    RewriteEngine on

    # If the start of the URL doesn't match one of these...
    RewriteCond $1 !^(index\.php|robots\.txt|assets|cache|themes|uploads)

    # Route through index.php
    RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

Добавить, не забудьте об этом в config.php:

/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = '';

И помните: это не будет «удалять» index.php из вашего URL автоматически, а скорее направит запрос через него, если его нет. Если у вас есть жестко закодированные ссылки с index.php, их нужно будет изменить, или вам потребуется дополнительная конфигурация .htaccess. Если вы используете функции URL-адреса CI, такие как base_url(), site_url() и anchor(), они не будут использовать index.php, если вы не указали их в конфигурации выше.

0 голосов
/ 01 июня 2013

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

Если имя моего сайта codeIgniter_ci_intro

Я использовал код в .htaccess

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

и я изменил в config.php

$config['index_page'] = '';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...