我在向www
的网址添加.htaccess
时遇到了一个相当奇怪的问题。我有一个基于codeigniter的网站,并将www
添加到所有网址。但我的Post
请求已停止工作。
这是我的apache .htaccess文件的内容
RewriteEngine on
#for adding www
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteCond $1 !^(index\.php|img|public) [NC]
RewriteRule ^(.*)$ /index.php?/$1 [L]
我正在使用$config['uri_protocol'] = 'AUTO';
并且它可以与非www
网址一起使用,但如上所述,它会在POST
添加www
后停止REQUEST_URI
次请求。我甚至试过$config['base_url'] = 'http://example.com';
,但没有帮助。
我有一些其他的设置。
$autoload['helper'] = array('url');
并在自动加载www
我想问题是添加POST
后302重定向无法理解{{1}}数据。
答案 0 :(得分:1)
更改您的基本网址:
http://example.com
为:
http://www.example.com
答案 1 :(得分:0)
而不是在.htaccess中进行301重定向,只需将该逻辑烘焙到您的应用中即可。
例如,您可以执行的每个请求:
if (strstr($_SERVER['HTTP_HOST'], 'www') === FALSE) {
$domain_with_www = 'http://www.example.com';
header ('HTTP/1.1 301 Moved Permanently');
header ("location: ".$domain_with_www.$this->uri->uri_string);
}
通过扩展CI_Controller,您可以在每个请求上运行此命令。有关详细信息,请参阅此处:http://codeigniter.tv/a-10/Extending-the-core-MY_Controller-and-beyond