出于某种奇怪的原因,如果地址栏在完整网站名称之前没有www,我的CMS就会退出。例如,当我们输入xyz.com时,它会将我带到网站,但之后它不会显示为已登录,如果我输入www.xyz.com,它会找到cookie并显示我已登录。
我想要做的是,当用户在xyz.com中输入时,我想直接(对用户透明),请访问www.xyz.com。我想在xyz.com之前添加www。我尝试在index.php所在的目录中添加.htaccess文件,这是htaccess文件中的代码。
DirectoryIndex index.php
Redirect xyz.com www.xyz.com/index.php
当我通过ftp filezilla传输时,.htaccess文件正在消失。
答案 0 :(得分:0)
在htaccess文件中尝试此操作:
选项+ FollowSymlinks
重写引擎
RewriteCond%{HTTP_HOST} ^ xyz.com $
RewriteRule ^ /?$“http://www.xyz.com”[R = 301,L]
然而,您的问题听起来像cookie相关。可能CMS使用cookie来检查登录状态,但cookie域参数是“www.xyz.com”而不是“.xyz.com”。
---编辑---
改进了代码的最后一行(经过测试和工作),但正如tcp所说,必须启用mod_rewrite。如果您无法启用它,请尝试Lobsterm发布的代码,如果您也无法执行此操作,则可以尝试将Cookie域参数从“www.xyz.com”更改为“.xyz.com”
答案 1 :(得分:0)
如果您愿意修改index.php,可以在文件顶部添加以下逻辑:
/*This is a tempory redirection from mysite.com to www.mysite.com*/
if($_SERVER['SERVER_NAME'] == 'mysite.com')
{
$redirect = $_SERVER['REQUEST_URI'];
header( 'Location: http://www.mysite.com'. $redirect ) ;
}
答案 2 :(得分:0)
如果要使用重写,请确保在Apache conf文件中加载mod_rewrite并检查AllowOverride参数是设置为All还是仅允许在.htaccess中使用的指令
同样如aletzo所说,您可能希望您的cookie覆盖整个域,因此将cookie域从www.example.com更改为example.com。 然后,用户是使用www前缀还是在子域内访问无关紧要。
编辑:很高兴你找到了你想要的答案,但如果你需要让filezilla将来显示.htaccess,服务器 - >强制显示隐藏文件