Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
URL重写(WAMP):删除";index.php“;来自URL(对于具有自定义文件夹结构的Codeigniter项目)_Php_Apache_.htaccess_Codeigniter_Url Rewriting - Fatal编程技术网

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

URL重写(WAMP):删除";index.php“;来自URL(对于具有自定义文件夹结构的Codeigniter项目),php,apache,.htaccess,codeigniter,url-rewriting,Php,Apache,.htaccess,Codeigniter,Url Rewriting,首先,我知道这个问题可能已经被问了150万次,于是我用谷歌搜索了一下。 我已经阅读并尝试了很多建议,但问题仍然存在 这是我们的第一个内部CI项目。 使用非标准(在CI世界中)目录树创建了一个框架“项目”,以更好地匹配我们其他现有项目的文件结构。 事情是这样的: ../ /www -index.php /应用程序 -/config -/控制器 -/…等 -/lib --/供应商 --/CODE点火器 ---/2-1-2 --/系统 ----/…等 -/library -/views -/…等等 我

首先,我知道这个问题可能已经被问了150万次,于是我用谷歌搜索了一下。
我已经阅读并尝试了很多建议,但问题仍然存在

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

../
/www
-index.php
/应用程序
-/config
-/控制器
-/…等
-/lib
--/供应商
--/CODE点火器
---/2-1-2
--/系统
----/…等
-/library
-/views
-/…等等

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

我确认我的http.conf已经为wamp/www提供了
AllowOverrride All
,并且我在/www目录中添加了一个
.htaccess
文件。。。无效:(

我有这个项目的别名

### \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>
###\wamp\alias\bomProject.conf###
别名/bomProject/“c:/wamp/NetBeansProjects/bomProject/www/”
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
此别名允许我在以下位置成功浏览项目:http://localhost/bomproject.
我已将/config/config.php中的
$config['index_page']
设置为
'

我还尝试更改
$config['base\u url']=''

$config['base\u url']='http://localhost/bomProject/“
在config.php中…两者都不起作用


我的怀疑是,这个问题归结到我们的目录树,但是我对htaccess和regex缺乏经验,不知道如何解决它。

[编辑]:
@chris clower向我介绍了config/routes.php,所以我读了一点。
很高兴知道这一点!我非常感激他们,也很喜欢与他们一起玩……只是根据文档(至少我是如何理解的),我认为路线不是解决我问题的办法。
当尝试“localhost/bomProject/{controller}”…其中{controller}显然是一个真实的控制器名…我仍然得到404错误:“未找到-请求的URL/wamp/NetBeansProjects/bomProject/www/index.php/{controller}在此服务器上未找到。”
[/EDIT]:


非常感谢您的帮助。

您需要查看
/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
,它看起来不错,不需要对此进行任何更改。

您需要查看
/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
,它看起来很好,不需要对此进行任何更改。

@mOrloff应该注意,在本例中,上面需要一个用于
管理员的控制器,另一个用于
应用程序/控制器
中的
论坛
。好的,我们有一个名为“沙盒”的示例控制器使用两种方法,“index”和“tester”…我的路由为
$route['default_controller']='index';$route['sandbox']='sandbox/tester/';$route['404_override']='”;
调用“/sandbox”时,我能够控制我的着陆位置控制器…但它仍然需要在url中使用*index.php…否则我会得到一个404…想法???@mOrloff
$route['sandbox']='sandbox/index/';$route['sandbox/(:any)]='sandbox/$1';
谢谢。虽然请求确实得到了正确的路由,但url中仍然需要INDEX.PHP。我是否遗漏了什么?请尝试在.htaccess文件中INDEX.PHP的开头添加一个
/
,其中有:
RewriteRule^(.*)$INDEX.PHP/$1[L]
,如下所示:
RewriteRule^(.*)$/INDEX.PHP/$1[L]
。此外,在该行之前,请尝试添加以下内容:
RewriteCond$1!^(index\.php | images | robots\.txt)
。我在这里理解,但值得一试。@mOrloff应该注意的是,在这个例子中,上面需要一个控制器,用于
管理
,另一个用于
论坛
,位于
应用程序/controllers/
。好的,我们有一个名为“sandbox”的示例控制器,它有两种方法,“index”和“tester”…使用我的路由作为
$route['default_controller']='index';$route['sandbox']='sandbox/tester/';$route['404_override']='';
调用“/sandbox”控制器时,我能够控制我在哪里着陆…但它仍然需要在url中使用*index.php…否则我会得到一个404…想法???@mOrloff
$route['sandbox']='sandbox/index/';$route['sandbox/(:any)]='sandbox/$1';
感谢您的支持。虽然请求确实得到了正确的路由,但url中仍然需要index.PHP。我缺少什么吗?请尝试在.htaccess文件中index.PHP的开头添加一个
/
,其中有:
RewriteRule^(.*)$index.PHP/$1[L]
,比如:
RewriteRule^(.*)$/index.php/$1[L]
。另外,在这一行之前,尝试添加以下内容:
RewriteCond$1!^(index\.php | images | robots\.txt)
。我理解了这里,但值得一试。