1

我是服务器端编码的新手,所以如果答案对某些人来说是显而易见的,请耐心等待:

前段时间我设计了一个网站的前端。它作为子目录驻留在共享主机环境中。我正在尝试上传 .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的 url

我无法检测到上述代码中是否有任何语法错误,我们将不胜感激。

谢谢

4

1 回答 1

0

这只是我的猜测。但是你为什么要使用 .htaccess 进行简单的重定向呢?如果只有一个站点(根目录/主机上的特定子目录)应该始终重定向到新的移动版本,那么为什么不能使用服务器/主机配置设置永久重定向?

此类工具几乎在每个控制面板中,如 cPanel、DirectAdmin 等。即使您的托管服务提供商运行自己的复杂软件来运行和管理托管服务器,我也很难相信它没有为您提供任何工具或解决方案进行永久重定向,从而迫使您使用 .htaccess 玩这个游戏。

顺便说一句:如果你 100% 确定你不能通过服务器/主机配置来做到这一点,并且 .htaccess 是唯一的方法,那么也许这是改变你的主机的正确时机?毕竟,域名/地址/URL对于每个项目来说都是最重要的,它可以托管在任何主机上。

至于您的问题,我建议从普通 PC 或 Linux 并通过配备 FireBug 或类似开发人员工具的浏览器运行第二个场景(子文件夹中的 .htaccess)。然后输入您应该执行重定向但失败的网页,并仔细检查该工具的日志/路径以查看您实际重定向到的位置?这是您期待的真正的 URL 吗?大多数情况下,“您请求的页面不可用”意味着它的含义,即 - 一个网站试图将您的浏览器重定向到一个不存在的 URL。

于 2012-06-20T13:26:20.740 回答