Codeigniter路由不适用于以下过程

时间:2016-10-18 08:20:10

标签: php .htaccess codeigniter

我想在代码点火器中进行路由,我也完成了以下步骤 但它没有工作。我已经完成了所有必需的设置,但也是 它没有用。请让我知道我是否遗漏了任何东西。

第1步

在.htaccess文件中添加此内容

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]
</IfModule>

第2步:

删除codeigniter config中的index.php

$config['index_page'] = '';

第3步

在route.php中添加此内容

$route['Viewsignup'] = 'Login/index/Viewsignup';

我的网址是这样的: http://localhost/machinetest/index.php/Login/Viewsignup

我想要这个网址: http://localhost/machinetest/index.php/Viewsignup

请帮帮我, 在此先感谢

2 个答案:

答案 0 :(得分:2)

.htaccess不应该是问题。试试这个

$route['Viewsignup'] = 'Login/Viewsignup';

当您的网址如Login

时,系统会将您带入Viewsignup控制器的http://localhost/machinetest/index.php/Viewsignup方法

要从网址中删除index.php,只需使用以下

更新您的.htaccess即可
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

现在http://localhost/machinetest/Viewsignup网址也可以使用

答案 1 :(得分:0)

在某些服务器上,Apache配置为忽略.htaccess文件中的部分或全部指令。这是出于安全原因。 AllowOverride指令控制.htaccess文件中允许的功能。例如,AllowOverride None可以关闭文件夹及其子文件夹的htaccess文件。

检查Apache配置文件中应用了哪个AllowOverride指令到包含问题htaccess文件的目录。

如果您不确定要查找哪个配置文件,请从主Apache配置文件httpd.conf或apache2.conf开始。如果您的网站配置在httpd.conf包含的文件中(例如虚拟主机配置文件),则需要查看该文件。请参阅wiki以找到您的httpd.conf。

要启用.htaccess文件,请更改AllowOverride None to AllowOverride All.

例如,对于CentOS 5.3服务器,我需要更改文件/etc/httpd/conf.d/virtualhosts.conf中的AllowOverride设置。

之前的httpd.conf:

Options FollowSymLinks
AllowOverride None

httpd.conf之后:

Options FollowSymLinks
AllowOverride All

请注意,启用htaccess文件会带来安全隐患,因为htaccess文件会覆盖您的Apache配置。例如,如果您的网站提供上传,黑客可能会将.htaccess文件上传到您的服务器并使用它来获取对您服务器的访问权限。 AllowOverride有一些选项可以限制将从.htaccess文件中使用的指令。请参阅Location of httpd.conf on CentOS, Ubuntu, Mac and others

参考documentation for AllowOverride.