URL重写(WAMP):从URL中删除“index.php”(对于具有自定义文件夹结构的Codeigniter项目)

时间:2012-08-09 23:55:33

标签: php apache .htaccess codeigniter url-rewriting

首先,知道这个问题可能被问了150万次,我做了谷歌 我已阅读并尝试了的建议,但问题仍然存在。

这是我们的第一个内部CI项目 使用非标准(在CI世界中)目录树创建骨架“项目”,以更好地匹配我们其他现有项目的文件结构。
它是这样的:

  

../
  / WWW
   - index.php
  /应用
   - / config
   - / controllers
   - /...etc
   - / lib
   - / /供给    - - - / codeIgniter
   - - - - / 2-1-2
   - - - - - / system
   - - - - - - /...etc
   - / library
   - / views
   - / ...等

我将它复制到我的机器(WAMP)并测试了几个控制器 一切似乎都很好。唯一的问题是网址中仍然需要 index.php 我希望能够使用 http:// localhost / project / controller / method ,而不是需要 http:// localhost / project / index.php /控制器/方法

我确认我的http.conf对于 wamp / www AllowOverrride All,我在 / www 目录中添加了.htaccess个文件......无济于事:(

### \www\.htaccess ### 
# After many tries, I reverted to these simple 4 lines and stopped here

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

我有项目的别名

### \wamp\alias\bomProject.conf ###

Alias /bomProject/ "c:/wamp/NetBeansProjects/bomProject/www/" 

<Directory "c:/wamp/NetBeansProjects/bomProject/www/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all
</Directory>

此别名允许我在 http:// localhost / bomproject 成功浏览项目。
我已将 /config/config.php 中的$config['index_page']设置为''

我也尝试过更改$config['base_url'] = ''
config.php 中的$config['base_url'] = 'http://localhost/bomProject/' ...都没有效果。


我的怀疑是问题归结为我们的目录树,但是我对htaccess 缺乏经验,而正则表达式就知道如何解决它。

[编辑]:
@ chris-clower向我介绍了 config / routes.php ,所以我稍微阅读了一下。
很高兴知道!我非常感激,我喜欢和他们一起玩......根据文档(我至少理解它),我不认为路线是我的解决方案问题。
当尝试“ localhost / bomProject / {controller} ”...其中 {controller} 显然是一个真正的控制器名称......我仍然会收到404错误:“ Not Found - 在此服务器上找不到请求的URL /wamp/NetBeansProjects/BomProject/www/index.php/ {controller}。
[/编辑]:

任何帮助都 非常 赞赏。

1 个答案:

答案 0 :(得分:0)

你需要查看/application/config/routes.php并在那里添加你的路线,类似于:

$route['default_controller'] = 'index';
$route['admin'] = 'admin/index/';
$route['admin/(:any)'] = 'admin/$1';
$route['forum'] = 'forum/index/';
$route['(:any)'] = 'index';
$route['404_override'] = '';

至于您的.htaccess,它看起来很好,不应该对此进行任何更改。