如果WWW在URL中,htaccess不会删除index.php

时间:2017-04-18 15:34:22

标签: .htaccess codeigniter indexing

使用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,有人可以指导我朝正确的方向发展。

2 个答案:

答案 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]