【问题标题】:how to auto change my site url from http:// to http://www. in browser address bar如何自动将我的网站网址从 http:// 更改为 https://www。在浏览器地址栏中
【发布时间】:2016-03-21 19:37:53
【问题描述】:

在我的constants.php 文件中,我设置了站点根目录。

 define("SITEROOT","http://www.example.com/");

请查看 http:// 和 http://www 的区别。在下面的描述中。

现在 session_start 仅在我从 http://www.example.com/index.php 移动到任何其他页面时才有效。但是,如果我使用 http://example.com 并尝试使用 http://www.example.com/pagename.php 在其他页面上回显会话详细信息,则会话不会继续。

如果用户使用 http://example.com,有什么方法可以自动将 浏览器地址栏中的 url 更正为 http://www.example.com 吗?

【问题讨论】:

标签: php session url


【解决方案1】:

您可以使用您的网络服务器来强制使用 www 或非 www 网址。强烈建议在实时网站上使用其中之一(不允许同时使用两者)进行搜索索引。

如果您使用的是 Apache,您可以通过以下方式更新您的网站 .htaccess 文件,以获取不带 www 的网址

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule .* http://%1%{REQUEST_URI} [R=301,L]

更新

正如 Vinny 在 cmets 中指出的那样,建议尽可能使用 .htaccess,而是在 Virtual Host Config file 中处理它。

【讨论】:

  • @darshan 很高兴我能帮上忙,请记住,当您的网站上线时,您不允许使用 www 和非 www 访问该网站 :)
  • 我没有得到你的评论...你的意思是,只有 http 和 www 位于第一位置的 myexample.com 可以工作 - 在浏览器中打开,而不仅仅是 myexample.com 中的 http ?因为我在 htaccess 中尝试了你的代码,并且没有 www 前缀的站点会在浏览器中使用 www 前缀自动更正......我想要......
  • @darshan 我的意思是(例如)如果您的域是 mydomain.org,则不允许通过 www.mydomain.org(带有 www)和 mydomain.org(非 www)访问该网站) 谷歌等搜索引擎将此视为重复内容,这会影响您的搜索排名:)
  • 这个答案虽然正确,但对于生产服务器来说是错误的形式,请参阅stackoverflow.com/questions/1100343/…
  • @VinnyMannell 我同意你的观点,必须尽可能使用 VirtualHost,但在大多数共享主机中,有时 .htaccess 是唯一的选择。我将更新我的答案以包括这一点,谢谢您指出:)
【解决方案2】:

如果您使用的是 apache,请将其添加到您的配置中。

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / http://www.example.com/
</VirtualHost>

【讨论】:

【解决方案3】:

您应该能够使用这样的东西(在显示任何内容或发送标头之前,因此在您的会话创建代码之前):

if( "www." != substr( $_SERVER["SERVER_NAME"], 0, 4 ) ){
    header( "Location: http://www.example.com".$_SERVER["REQUEST_URI"] );
    exit();
}

或者,您可以像这样创建/修改您的 .htaccess 文件:

Rewritecond %{HTTP_HOST} !www.domain.com
RewriteRule ^/(.*)$ http://www.domain.com/$1 [R=301]

或许

RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^/(.*)$ http://www.%{HTTP_HOST}/$1 [R=301]

【讨论】:

  • 感谢您的建议。这是完美的..但是阿伦在你之前 6 分钟回答了,我先尝试了这个解决方案,它对我有用..所以将他的答案标记为正确/接受的答案。对不起,再次感谢你
猜你喜欢
  • 2021-01-08
  • 2016-01-02
  • 2011-11-14
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多