.htaccess文件在filezilla中消失了吗?如何检查文件是否存在?

时间:2010-08-04 18:33:59

标签: redirect web lamp

出于某种奇怪的原因,如果地址栏在完整网站名称之前没有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文件正在消失。

3 个答案:

答案 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,服务器 - >强制显示隐藏文件