Я создал приложение 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?
Благодарю вас, Габриэль.
Добавьте это до последнего правила:
RewriteBase / RewriteCond %{HTTP_HOST} !="" RewriteRule ^index.php(/.*)?$ http://%{HTTP_HOST}$1 [R=301]
или запретить доступ:
RewriteRule ^index.php(/.*)?$ - [R=404]
Документация CodeIgniter wiki описывает, как достичь этого точного поведения.
В этой статье объясняется, как удалить «index.php» из ваших URL-адресов приложений CI . Тем не менее, он НЕ удаляет необходимость в Index.php, который является фронт-контроллером CI, т. Е. Хотя Index.php не будет отображаться в URL-адресе, он все равно должен присутствовать на верхнем уровне вашего сайта (выше / system /).
Можете ли вы попробовать? RewriteRule ^ (. *) $ Index.php /? $ 1 [L]
Надеюсь, это сработает.
Я придумал обходное решение для этого:
$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 )
Вам не нужно писать код для «перенаправления» index.php URLS.
Перейдите в application / config / config.php и выполните следующие изменения:
$config['index_page'] = "";