从url [Codeigniter]中删除index.php

时间:2014-10-26 07:27:46

标签: php .htaccess codeigniter

首先请原谅我提出这个问题,因为已经多次讨论过这个问题。 我尝试了所遇到的一切,但我觉得我做错了什么。所以在这种情况下我会感激一些帮助。

我想从网址中删除'index.php'。目前网址是

http://localhost/eshop/index.php/home

但我希望它像

http://localhost/eshop/home

This is my folder structure

这是我的.htaccess

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

我也试过这个

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

只有“http://localhost/eshop/”正在运行,但“http://localhost/eshop/home”或“http://localhost/eshop/contacts”仍然失败。

3 个答案:

答案 0 :(得分:1)

此外,您应该说您的CI没有将index.php插入生成的网址

https://ellislab.com/codeigniter/user-guide/general/urls.html

您还需要更改配置

$config['enable_query_strings'] = FALSE; 

有几个变体(例如,将exampl set index page作为空字符串 - 请参阅此主题CodeIgniter removing index.php from url

答案 1 :(得分:1)

在项目的根文件夹中创建.htaccess文件并粘贴此代码

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

和config.php

$config['base_url'] = '';

答案 2 :(得分:0)

以下.htaccess应该有效。

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