0

我在从我的 CI 应用程序 url 中删除 index.php 时遇到了一些问题。遵循此处的官方文档,但显然还缺少一些东西。我设置了一个 CI 应用程序并将其放在服务器上的 /var/www/test 上,其中 test 是指向 /home/user/websites/test 的符号链接。如果我这样做,一切都很好http://myIp/test/index.php/welcome,但如果我这样做,一切都会工作http://myIp/test/welcome。我在我的测试文件夹中包含了一个 .htaccess,其中包含以下内容:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

并且还没有成功地使用 RewriteBase 属性。我做错了什么或错过了什么?

4

5 回答 5

1

将以下内容放入 .htaccess

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

<Files "index.php">
AcceptPathInfo On
</Files>

将此文件放在 index.php 附近的应用程序和系统文件夹中,并且在它们附近不要忘记写 $config['index_page'] = ''; 而不是 $config['index_page'] = 'index.php';

于 2014-01-17T23:42:40.013 回答
0

您的重写规则不正确(或充其量是错误的)。应该如下

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

中的[L]标志RewriteRule向 apache 指示不应处理进一步的规则并且应立即应用该规则。有关这方面的更多信息,请参阅有关 L 标志的 apache 文档。在您的情况下,这很重要,因为您使用的是符号链接和.htaccess文件,而不是直接将规则应用于您的 vhost 文件,鉴于这种情况以及 .htaccess 很慢,强烈建议您这样做。

于 2013-11-10T23:29:29.850 回答
0

试试这个:

 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?/$1 [L]
于 2013-11-10T22:08:17.507 回答
0

打开application/config/config.php,改变

$config['index_page'] = 'index.php'; 

$config['index_page'] = '';
于 2013-11-10T21:15:26.257 回答
0

如果我的问题正确,您想让您的链接正常工作并从 URL 中删除“index.php”。请按照以下步骤操作,如果这能解决您的问题,请告诉我。

1)从位于 config 目录中的 config.php 中删除“index.php”,使其看起来像这样$config['index_page'] = '';

2)将此添加到 .htaccess 文件

DirectoryIndex index.php
RewriteEngine on

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

如果您有任何疑问或问题,请告诉我。希望对您有所帮助。

最好的问候,泽山。

于 2013-11-11T06:05:35.120 回答