0

我已经尝试了几个小时,但无法使其工作。到处寻找答案,似乎没有什么能解决我的问题。

我什至尝试了这里描述的解决方案:Remove index.php in codeigniter 2.1.0。一点运气都没有。

我已将 config['index_page'] 设置为 ''。

我的 .htaccess 位于根文件夹(sys 和 app 文件夹所在的位置)上,写法如下:

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

尽管如此,我可以访问我的控制器方法的唯一方法是在 url 中使用该死的 index.php。是的,我的 apache conf 启用了 mod rewrite。

任何帮助都会非常好。

编辑

我会添加更多信息,也许它是相关的。

  • 我正在使用 ZendServer。
  • 我现在在 localhost 工作。
4

5 回答 5

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

我在 ZendServer 上没有经验,但是今晚我在 localhost 上使用 xampp(没有 ZendServer)也遇到了这个问题,终于让它工作了:

  1. 检查您的 httpd.conf,并确保“LoadModule rewrite_module modules/mod_rewrite.so”行没有被注释。
  2. 打开 config.php,设置 $config['base_url'] = 'http://localhost/yourdirectoryname/'
  3. 仍在 config.php 中,设置 $config['index_page'] = ''
  4. 在与您的 index.php 相同的目录中创建 .htaccess 文件(在我的情况下,htdocs/yourdirectoryname)
  5. 该 .htaccess 文件的内容如上
于 2012-11-24T17:16:37.713 回答
1

我没有使用代码点火器的经验,但是如果我理解正确,您正在尝试向用户提供 /index.php/my-page 之类的内容,而无需他在 index.php 之前添加它?

如果我是正确的,你可以尝试这样的事情:

RewriteBase /                                 # make sure we always rewrite from within the root directory

RewriteCond %{REQUEST_FILENAME} !-f           # make sure the request is not to an existing file
RewriteCond %{REQUEST_FILENAME} !-d           # nor an existing directory
RewriteCond %{REQUEST_FILENAME} !^index\.php  # make sure we do only interpret requests that DO NOT start with index.php
RewriteRule ^(.*)$ index.php/$1 [L,QSA]       # interpret request as if it were to index.php/...

# make sure we do only interpret requests that DO start with index.php
RewriteRule ^index\.php/(.*)$ $1 [L,R,QSA]    # redirect user to new URL, which will be handled by the first rewriterule

让我知道这是否有效

于 2012-11-07T15:52:17.433 回答
1

试试这个,我在任何地方的许多主机上都使用过这个,检查:

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

如果还不够,则转到config.php文件并搜索此行:

|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of 'AUTO' works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| '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';

我使用AUTO,但您可能需要将其切换为REQUEST_URIor QUERY_STRING,尝试

于 2012-11-24T17:29:50.593 回答
0

我终于设法解决了这个问题。感谢所有答案,特别感谢@ddanurwenda。他的重写规则是唯一解决我问题的规则。

我忽略了一个 Apache 配置:我更改了这一行(来自 httpd.conf):

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

到以下:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>

该配置使我的 htaccess 文件无法被读取。

于 2012-12-03T14:11:03.180 回答
0

这就是我使用和工作的。在您的 .htaccess 中使用此代码

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

只需确保 .htaccess 在您的根文件夹中。(即:xampp/htdocs)

然后在您的 config.php(application\config) 中替换 config['index_page']='index.php'config['index_page']=''.

于 2013-05-28T09:53:10.600 回答