我是服务器端编码的新手,如果答案对某些人来说很明显,请耐心等待:
我前段时间设计了一个网站的前端。它作为子目录驻留在共享托管环境中。我正在尝试上传.htaccess文件以便重定向到其移动版本(我没有设计并且托管在另一个帐户上)。我已经尝试将.htaccess文件上传到根目录和子目录,每个文件都有问题。
当我上传到根目录时,任何设备上都不会发生重定向。这不是我的愿望,但我期待根目录下的所有网站都会被重定向到这个网站的移动版本,但什么也没发生。
当我将.htaccess文件上传到子目录时 - 从所有设备查看返回“您请求的页面无法使用”
以下代码是移动设计人员提供的输入.htaccess文件的代码:
<IfModule mod_rewrite.c>
RewriteEngine on
#Check if this is the desktop to mobile query string
RewriteCond %{QUERY_STRING} (|&)m=1(&|$)
#Set a cookie, and skip the next 2 rules
RewriteRule – [CO=mredir:1:%{HTTP_HOST},S=2]
#Check if this is the mobile to desktop query string
RewriteCond %{QUERY_STRING} (|&)m=0(&|$)
#Set a cookie, and skip the next rule
RewriteRule – [CO=mredir:0:%{HTTP_HOST},S]
RewriteCond %{HTTP_USER_AGENT}
“android|blackberry|iphone|ipod|iemobile|opera
mobile|palmos|webos|googlebot-mobile” [NC]
#Check if we’re not already on the mobile site
RewriteCond %{HTTP_HOST} !m\.
#Can not read and write cookie in same request, must duplicate condition
RewriteCond %{QUERY_STRING} !(|&)m=0(&|$)
#Check to make sure we haven’t set the cookie before
RewriteCond %{HTTP_COOKIE} !^.mredir=0.$ [NC]
#allow mobile sites to access images on the main site
RewriteCond %{REQUEST_URI} !\.(gif|png|jpe?g|ico)$ [NC]
RewriteRule ^(.*)$ http://example.mobi/ [L,R=301]
</IfModule>
我已经省略了将取代http://example.mobi
的网址我无法检测上述代码中是否存在任何语法错误,我们将非常感谢任何帮助。
由于
答案 0 :(得分:0)
这只是我的猜测。但是你为什么要使用.htaccess进行简单的重定向?如果只有一个站点(您的root / hosting上的特定子目录)应该始终重定向到新的移动版本,那么为什么不能使用您的服务器/托管配置设置永久重定向?
这些工具几乎都在cPanel,DirectAdmin等控制面板中。即使您的托管服务提供商运行自己的,用于运行和管理托管服务器的复杂软件,我也很难相信它不会为您提供任何工具或制作永久重定向的解决方案,从而迫使你用.htaccess玩这个游戏。
顺便说一句:如果你100%确定你不能通过服务器/主机配置来做到这一点,并且.htaccess是唯一的方法,那么这可能是改变主机的正确时机?毕竟,域/地址/ URL对每个项目来说都是最重要的,它可以托管在任何主机上。至于你的问题,我建议从常规PC或Linux以及配备FireBug或simillar开发工具的浏览器运行第二种方案(子文件夹中的.htaccess)。然后输入应该进行重定向的网页,但是会失败,并仔细检查该工具的日志/路径,以查看实际重定向的位置?这是你一直期待的网址吗?大多数时候“您请求的页面不可用”表示它的含义,即 - 网站试图将您的浏览器重定向到不存在的URL。