使用Htaccess,我可以从网址中删除www但是我在完全删除index.php时无休止地挣扎。
我正在使用codeigniter框架并检查了我的配置文件。
$config['index_page'] = '';
$config['base_url'] = '';
我也尝试过:正如有人在S.O的其他地方建议的那样:
$config['base_url'] = '/';
我的htaccess文件看起来像这样:
RewriteEngine On
RewriteBase /
RewriteCond%{REQUEST_FILENAME}! - f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule ^(。*)$ index.php?/ $ 1 [L]
#Force non-www:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mywebsite\.com [NC]
RewriteRule ^(.*)$ http://mywebsite.com/$1 [L,R=301]
我已经尝试了编写模式重写规则的所有不同版本,这个版本效果最好,但它为URL添加了一个问号和正斜杠 RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php?/$1 [L,QSA]
目前的结果是,如果我输入www.mywebsite.com,它将更改为mywebsite.com,这是正确的。
但如果我输入www.mywebsite.com/someuri,那么它就变成www.mywebsite.com/index.php?someuri
使用url变为的最后一个modrewrite规则 www.mywebsite.com /?/ someuri
然后我尝试在index.php之后添加问号,如下所示:
# Now the CodeIgniter part
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
对于后者,如果我在URL中键入index.php,它就不会消失。
我显然不明白mod-rewrite,有人可以指导我朝正确的方向发展。
答案 0 :(得分:0)
尝试以下
打开config.php并执行以下替换
IndexOutOfBoundsException
到
$config['index_page'] = "index.php"
在某些情况下,uri_protocol的默认设置无法正常运行。只需替换
$config['index_page'] = ""
通过
$config['uri_protocol'] ="AUTO"
htaccess的
$config['uri_protocol'] = "REQUEST_URI"
答案 1 :(得分:0)
尝试以下方法 打开config.php并执行以下替换
$config['index_page'] = '';
到
$config['index_page'] = 'index.php';
config base_url
$config['base_url'] = '';
到
$ark_root = "http://".$_SERVER['HTTP_HOST'];
$ark_root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"", $_SERVER['SCRIPT_NAME']);
$config['base_url'] = $ark_root;
的.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L]