CodeIgniter.htaccess index.php重写在用户目录上不起作用

CodeIgniter.htaccess index.php重写在用户目录上不起作用,php,apache,.htaccess,codeigniter,mod-rewrite,Php,Apache,.htaccess,Codeigniter,Mod Rewrite,我对codeigniter有一个小问题,我有一个.htaccess来重写index.php。如果我把我的项目放在/var/www上,或者如果我为它创建一个虚拟主机,它会工作得很好 但是我想使用我的用户目录,例如。如果我在尝试向控制器发出请求时使用我的用户目录,如:我收到以下错误: 找不到 在此服务器上找不到请求的URL/index.php 这是我当前的配置: .htaccess RewriteEngine on RewriteCond $1 !^(index\.php|(.*)\.swf|for

我对codeigniter有一个小问题,我有一个.htaccess来重写index.php。如果我把我的项目放在/var/www上,或者如果我为它创建一个虚拟主机,它会工作得很好

但是我想使用我的用户目录,例如。如果我在尝试向控制器发出请求时使用我的用户目录,如:我收到以下错误:

找不到

在此服务器上找不到请求的URL/index.php

这是我当前的配置:

.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
application/config/config.php

$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
$config['encryption_key'] = 'myencryption_key';
//all remaining is the default config
此配置在具有类似域但不在我的用户目录上的生产环境中非常有效

我做错了什么?有什么想法吗?
提前感谢。

您需要像这样删除第一个斜杠berfore index.php

RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

本地解决方案

重新编写引擎打开
重写库/ci/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$/ci/index.php/$1[L]

在线解决方案
重新编写引擎打开
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D

RewriteRule^(.*)$/index.php?/$1[L]

我在中找到了一个解决方案,首先我需要添加RewriteBase行,如下所示:

RewriteBase /~userdir/myproject/
然后,删除最后一行index.php之前的斜杠

RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
有人这么说

RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots\.txt|favico​​n\.ico)
是冗余的,下面两行代码将覆盖它

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
以及所有其他真实文件/目录。他们基本上会说“如果请求不是针对一个真实的文件,并且请求不是针对一个真实的目录,那么将请求传递到index.php

因此,我的最终.htaccess如下所示:

RewriteEngine on
RewriteBase /~userdir/myproject/   
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

它在本地也能很好地工作,但在生产中使用

对我不起作用,我得到了这样的信息:在这个服务器上找不到请求的URL/home/userdir/public_html/project/index.php。很抱歉,我没有看到您从配置中删除了index.php。请尝试放置$config['index_page']='index.php';并且不要忘记更改中提到的apache配置