0

在添加www.htaccess. 我有一个基于 codeigniter 的站点并添加www到所有 url。但我的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';

并且它确实适用于非wwwurl,但它POST在添加后停止请求工作www,如上所述。我什至尝试过REQUEST_URI,但它没有帮助。我的其他一些设置是。

$config['base_url'] = 'http://example.com';

并在自动加载$autoload['helper'] = array('url');

我猜问题是添加后的302重定向www不理解POST数据。

4

2 回答 2

1

从以下位置更改您的基本 URL:

http://example.com

至:

http://www.example.com
于 2016-07-28T06:20:51.550 回答
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

于 2013-06-20T10:30:02.070 回答