0

如何删除 index.php 以便利用 CI 的 URL 技巧?当我删除“index.php”时,即使控制器上存在必要的类,它也会出现 404 错误或 403。

这是目前我在根目录上的 .htaccess:

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

config.php 上的其他 CI 规范:

$config['index_page'] = '';

$config['uri_protocol'] = 'AUTO';

rewrite_module 已启用。

在 httpd.conf 上:

<Directory />
Options FollowSymLinks
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>

编辑:明确地说,我可以访问我的应用程序的“主页”(http://localhost/projectfolder)。但是,当我访问特定的控制器 ( http://localhost/projectfolder/admin) 时,它将不起作用。但是当 index.php 在主机和控制器 ( http://localhost/projectfolder/index.php/admin) 之间时,它可以工作。我正在寻找解决中间的'index.php'。

4

4 回答 4

0

看了几遍你的问题,终于明白了。我相信您需要添加一个 RewriteBase 如下所示:

RewriteEngine on
RewriteBase /projectfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
于 2013-02-23T23:41:30.027 回答
0

如果您使用 localhost,那么您的 $_SERVER['DOCUMENT_ROOT'] 将取决于您的 wamp 或 xampp 文件夹。它不会包含您的项目文件夹名称。

因此,如果您的项目文件夹名称是“test”,那么您必须如下编写您的 htaccess。

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

您必须在最后一行添加“test/”,并且不需要在 URL 中添加 index.php。我希望这会奏效。

于 2013-02-23T05:42:26.503 回答
0

扩展永联的评论:

您不会实际删除 index.php 文件。您收到 403 因为目录列表被拒绝(并且 index.php 不存在),并且控制器/方法 url 上的 404 因为它们实际上不存在。

把 CodeIgniter index.php 放回它所属的地方,你应该没问题。这一行:

$config['index_page'] = '';

是“删除”index.php 的重要部分。有了这个空白,CodeIgniter 的 url/uri 辅助函数将不会放入index.phpurl。

有关更多信息,请参阅我的正确答案。base_url

于 2013-02-22T16:54:47.143 回答
0

请确保 mod_rewrite 已启用。也请像这样尝试 httpd.conf

<Directory /youdirectory path>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>

另请检查此处设置的 CodeIgniter URL

于 2013-02-22T16:14:10.383 回答