Php 如何将我的网站url从http://自动更改为http://www. 浏览器中的地址栏

Php 如何将我的网站url从http://自动更改为http://www. 浏览器中的地址栏,php,session,url,Php,Session,Url,在我的constants.php文件中,我设置了站点根目录 define("SITEROOT","http://www.example.com/"); 请参阅http://and中的差异。在下面的描述中 现在,只有当我从移动到任何其他页面时,session\u start才起作用。但是,如果我使用并尝试在另一个页面上使用回显会话详细信息,则会话不会继续 如果用户使用,是否有办法将浏览器地址栏中的url自动更正为 您可以使用web服务器强制使用www或非www URL。强烈建议在实时网站上使用

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

 define("SITEROOT","http://www.example.com/");
请参阅http://and中的差异。在下面的描述中

现在,只有当我从移动到任何其他页面时,session\u start才起作用。但是,如果我使用并尝试在另一个页面上使用回显会话详细信息,则会话不会继续


如果用户使用,是否有办法将浏览器地址栏中的url自动更正为

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

如果您使用的是Apache,您可以通过更新您的站点
.htaccess
文件来实现此目的,如下所示,用于不带www的url

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


正如Vinny在评论中指出的那样,建议尽可能不使用.htaccess,而是在中处理它。

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

如果您使用的是Apache,您可以通过更新您的站点
.htaccess
文件来实现此目的,如下所示,用于不带www的url

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


正如Vinny在评论中指出的那样,如果您正在使用apache,建议尽可能不使用.htaccess,而是在.htaccess中处理它,并将其添加到配置中

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

ServerName example.com
重定向永久/http://www.example.com/

如果您正在使用apache,请将其添加到配置中

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

ServerName example.com
重定向永久/http://www.example.com/

您应该能够使用类似的内容(在显示任何内容或发送标题之前,在会话创建代码之前):

或者,您可以创建/修改.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]

您应该能够使用如下内容(在显示任何内容或发送标题之前,也就是在会话创建代码之前):

或者,您可以创建/修改.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]

检查此项检查此@darshan很高兴我能提供帮助,请记住,当您的网站上线时,您不允许使用www和非www访问网站:)我没有理解您在评论中的观点…您的意思是,只有http和www位于第一位的myexample.com才能工作-在浏览器中打开,而不仅仅是在myexample.com中使用http?因为我在htaccess中尝试了你的代码,没有www前缀的网站会在浏览器中自动更正为www前缀…我想要..@darshan我的意思是(例如)如果你的域名是mydomain.org,不要允许通过www.mydomain.org(带www)和mydomain.org(非www)访问网站谷歌等搜索引擎将此视为重复内容,这会影响您的搜索排名:)这个答案虽然正确,但对于生产服务器来说是不好的形式,请参见@VinnyMannello我同意您的观点,VirtualHost必须尽可能使用,但有时在大多数共享主机中使用。htaccess是唯一的选择。我会更新我的答案,包括,谢谢你指出:)@darshan很高兴我能提供帮助,请记住,当你的网站上线时,你不允许使用www和非www访问网站:)我没有得到你的评论…你的意思是,只有http和www位于第一位的myexample.com才能工作-在浏览器中打开,而不仅仅是myexample.com中的http?因为我在htaccess中尝试了你的代码,没有www前缀的网站会在浏览器中自动更正为www前缀…我想要..@darshan我的意思是(例如)如果你的域名是mydomain.org,不要允许通过www.mydomain.org(带www)和mydomain.org(非www)访问网站谷歌等搜索引擎将此视为重复内容,这会影响您的搜索排名:)这个答案虽然正确,但对于生产服务器来说是不好的形式,请参见@VinnyMannello我同意您的观点,VirtualHost必须尽可能使用,但有时在大多数共享主机中使用。htaccess是唯一的选择。我会更新我的答案,包括这一点,谢谢你指出:)谢谢你的建议。这很完美。但是阿伦在你和我尝试这个解决方案之前6分钟就回答了,这对我很有效。因此,将他的答案标记为正确/被接受的答案。抱歉,再次感谢你谢谢你的建议。这是完美的…但是阿伦在你和我之前6分钟回答了这个问题,我先尝试了这个解决方案,它对我有效…所以把他的答案标记为正确/被接受的答案。抱歉,再次感谢你…非常好的替代方案。。。我也会尝试一下,并会让你知道…谢谢你的建议..重写是紧张和混乱的:哦..非常好的选择。。。我也会尝试一下,并会让你知道…谢谢你的建议..重写既紧张又混乱: