【发布时间】:2011-12-01 18:34:10
【问题描述】:
我看到了.htaccess Redirect non-WWW to WWW preserving URI string,但它对我不起作用
如果我转到 mysite.com/site/something,我会被重定向到 mysite.com/something
RewriteCond %{HTTP_HOST} !^www\.mysite\.com$
RewriteRule (.*) http://www.mysite.com/$1 [R=301,L]
也试过了:
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www.mysite.com [NC]
RewriteRule (.*) http://www.mysite.com/$1 [R=301,L]
编辑:
这是我使用的代码,基于 Alfonso Rubalcava 的回答:
if (substr($_SERVER['SERVER_NAME'], 0, 3) != 'www')
{
if ($_SERVER['REQUEST_URI'] == '//site/')
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.site.com/site/');
exit;
}
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.site.com' . $_SERVER['REQUEST_URI']);
exit;
}
【问题讨论】:
-
这个
//site/看起来像是一个格式错误的链接。您可能希望在代码中更正(在视图中?)以避免搜索引擎将其索引为这样。 -
哦..链接不是格式错误,必须是带有 CI 路由或 htaccess 的东西才能删除 index.php..当我在浏览器上输入地址时行为是相同的
-
http://www.site.com//site/? -
我以为你的意思是我把链接弄错了
-
更好地使用
header("Location: http://www.".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);使其动态
标签: php .htaccess codeigniter