0

我使用下面的代码在我的 .htaccess 文件中删除了 codeigniter 中的 index.php。但我感到困惑的是我应该在哪里使用该文件。我应该在应用程序外部或应用程序内部的 www 文件夹中使用它吗?

我在所有地方都使用了它,它有效,但它弄乱了我的 css 或者说基本文件夹。我该如何克服这个问题。我应该使用 html 基本标签吗?

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

编辑

我的文件夹结构是

basefolder
  -application
  -css
  -js
  -images   
  -system
.htaccess
index.php
4

5 回答 5

2

您可以添加一个 RewriteCondition 排除所有现有文件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
于 2013-02-05T00:42:55.993 回答
1

用这个

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

如果不起作用检查你是否enabled mod_rewirtephpinfo();

如果它还不起作用,请尝试将其更改为第 40/54 行$config['uri_protocol']='AUTO'列出的内部文件之一:application/config/config.php

|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

有时我用 :REQUEST_URI而不是AUTO

于 2013-02-05T10:45:16.517 回答
0
RewriteEngine on
RewriteCond $1 !^(index\.php|css|js|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

这假设 css 与 index.php 等在同一目录中。此规则取决于您的文件结构。如果您使用目录树示例更新您的问题,我可以修改规则。

应该不需要其他配置,因为您提到它可以工作,但只是把事情搞砸了。

应该注意的是,粘贴的这个是我的 CI htaccess 文件中唯一的东西,我的工作正常。

另外,请参阅 Will 的评论。我的配置 url 后缀总是“”

于 2013-02-05T00:42:39.783 回答
0

我的解决方案,CI 系统向上移动(不从网络公开),应用程序是公开的,.htaccess对于每个子域(在根目录中),但它取决于您的结构(存在许多解决方案)

RewriteBase /
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L] 
于 2013-02-05T09:28:30.593 回答
0

将以下代码复制并粘贴到 .htaccess 文件中

选项 +FollowSymLinks

重写引擎开启

选项 - 索引

RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /index.php\ HTTP/ RewriteRule ^index.php$ http://www.yoursite.com/ [R=301,L]

于 2013-02-05T11:15:22.780 回答