1

如果我在控制器文件夹中有一些控制器而在子文件夹中有一个控制器,如何从 url 中删除“index.php”?例如,我的前端 url 看起来像这样:domain.com/site/contact.html 我希望我的后端 url 看起来像这样:domain.com/system/settings/profile.html,其中系统不是控制器,只是一个子文件夹在控制器文件夹中。当我输入domain.com/index.php/system/settings/profile.html时,一切正常,只是看起来不正确。这是我的 routes.php 文件中的内容:

$route['default_controller'] = "site";
$route['system'] = "system/login";
$route['404_override'] = 'errors/error_404';

这是我的 .htaccess 文件中的内容:

RewriteEngine on
RewriteCond $1    !^(index\.php|img|css|public|tmp|download|javascript|rte|document|xajax_js|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

谢谢。

4

4 回答 4

1

要从 URL 中删除 index.php,首先检查 mod_rewrite 在 apache 中是否启用,然后将其添加到 .htaccess 文件中

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

在 .htaccess 文件中并将 .htaccess 文件移动到 index.php 位置附近

/var/www/CodeIgniter/index.php
/var/www/CodeIgniter/.htaccess

在配置文件夹集中的 config.php 中

$config['index_page'] = '';
于 2012-11-05T06:38:22.480 回答
1

用于删除 index.php

在项目的根文件夹中创建一个 .htaccess 文件并编写这么多代码:

<IfModule mod_rewrite.c>

RewriteEngine On

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

</IfModule>

并保存它。

从您的 URl 中删除 index.php 并享受。请注意,.htacess 不在本地机器上运行。

于 2012-08-13T09:35:19.077 回答
0

您可以尝试设置RewriteBase喜欢RewriteBase /RewriteBase /site/

于 2012-08-13T08:36:10.633 回答
0

我的问题是 routes.php 文件中的保留控制器名称:

$route['system'] = "system/login";

您不能将子文件夹命名为“system”,因为根文件夹中有一个文件夹“system”。

于 2012-11-27T02:01:18.983 回答