Перенаправить index.php в CodeIgniter - PullRequest
4 голосов
/ 19 мая 2010

Я создал приложение CodeIgniter и теперь пытаюсь перенаправить URL-адреса с index.php на URL-адреса без него.

Мой текущий .htaccess:

RewriteEngine On
RewriteBase /

# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

# Enforce www
# If you have subdomains, you can add them to 
# the list using the "|" (OR) regex operator
RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC]
RewriteRule ^(.*)$ http://www.plugb.com/$1 [L,R=301]

# 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]

Единственная проблема в том, что одна и та же страница доступна с index.php и без него.

Например:

http://www.plugb.com/index.php/games/adventure-rpg

и

http://www.plugb.com/games/adventure-rpg

Есть ли способ перенаправить URL index.php?

Спасибо, Габриэль.

Ответы [ 5 ]

3 голосов
/ 19 мая 2010

Добавьте это перед последним правилом:

RewriteBase /    
RewriteCond %{HTTP_HOST} !=""
RewriteRule ^index.php(/.*)?$ http://%{HTTP_HOST}$1 [R=301]

или запретить доступ:

RewriteRule ^index.php(/.*)?$ - [R=404]
0 голосов
/ 16 января 2014

Вам не нужно писать код для перенаправления URL-адресов index.php.

Перейдите в application / config / config.php и внесите следующие изменения

$config['index_page'] = "";  
0 голосов
/ 21 мая 2010

Я нашел обходной путь для этого:

$clean_url = str_replace('index.php','',current_url());
$current_url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

if($clean_url!==$current_url)
{
    redirect($clean_url,'location',301);
}

Это не с .htaccess, но это в вашем контроллере может решить проблему. (По крайней мере, он работал в PlugB )

0 голосов
/ 19 мая 2010

Можете ли вы попробовать это? RewriteRule ^ (. *) $ Index.php /? $ 1 [L]

Надеюсь, так оно и будет.

0 голосов
/ 19 мая 2010

Вики-документация CodeIgniter описывает, как добиться такого точного поведения.

В этой статье объясняется , как убрать «index.php» из URL-адресов вашего приложения CI . Однако это НЕ устраняет необходимость в Index.php, который является фронтальным контроллером CI, т. Е. Даже если Index.php не появится в URL, он все равно должен присутствовать на верхнем уровне вашего сайта (над / system / каталог).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...