WordPress,HTACCESS-如果是iPhone或Safari,则重定向单页

时间:2018-08-22 13:32:56

标签: wordpress .htaccess redirect

我几乎一无所知,所以可能有问题!但是我已经尝试了20个不同答案的摘录,以尝试使这一点变得没有乐趣。我在一页上有一个表格,该表格无法在iPhone或Safari上使用。所以我有第二种形式。仅当浏览器是Safari或设备为iPhone时,才需要将一个页面(https://website.co.uk/normal-page/)重定向到另一个页面(/ mobilepage /)。 这是一种努力:

RewriteCond %{HTTP_USER_AGENT} "iphone|safari" [NC] RewriteCond %{REQUEST_URI} ^/normal-page/$ [NC] RewriteRule (.*) %{HTTP_HOST}/mobilepage/ [NC,R=301]

这完全停止了对该页面的任何访问-这是一个很大的进步,没有任何效果。我敢肯定这很简单,但我无法使其正常工作。 预先感谢。

2 个答案:

答案 0 :(得分:1)

我希望这是张贴此文章的正确位置。最终,我发现HTACCESS路由无效。不同的OS / Browser组合似乎在不需要的时候会任意忽略或应用规则。所以我去了Java语言。不够健壮,因为用户可能已禁用它,但是我不够聪明,无法找到更好的方法。

由于我发现整个过程都很难找到答案,因为我以为我会在此处发布解决方案-但要注意的是,我非常热衷于业余爱好者-我有更好的方法和更好的代码。 / p>

    <script type="text/javascript">
jQuery(document).ready(function(){
var FormSafe = 1;
if (window.navigator.userAgent.indexOf("Windows")!== -1) FormSafe=2;
if (window.navigator.userAgent.indexOf("Chrome")!== -1) FormSafe=3;
if (window.navigator.userAgent.indexOf("OPR")!== -1) FormSafe=4;
if (window.navigator.userAgent.indexOf("Android")!== -1) FormSafe=5;
if (window.navigator.userAgent.indexOf("BlackBerry")!== -1) FormSafe=6;
if (window.navigator.userAgent.indexOf("Firefox")!== -1) FormSafe=7;
if (window.navigator.userAgent.indexOf("iPhone")!== -1) FormSafe=1;
if (window.navigator.userAgent.indexOf("iPad")!== -1) FormSafe=1;

if ( FormSafe === 1 ) { 
            jQuery("#iphoneform").show(); } else
        { jQuery("#normalform").show(); }
});
</script>

我使用1-7只是通过查看结果来进行错误测试。对于其他所有对象,它可能只是== 1,对于其他情况则为0。但是1-7表示您可以为每个浏览器显示不同的div。

然后,它仅使用适用于任何浏览器/操作系统组合的形式显示或隐藏元素。

希望它可以帮助某人。

答案 1 :(得分:0)

由于三个原因,此方法不起作用。首先,您的第二个RewriteCond仅适用于/normal-page/。因此,如果结尾的斜杠不存在,它将不会选择该URL。使用/normal-page可以解决此问题,并且可以使用斜杠,也可以不使用斜杠。

最大的问题是您的rewriterule。您基本上是在尝试将URL重写为:http://example.com/example.com/mobilepage/,这显然破坏了您的页面。

您也不需要在第一个条件周围使用""

改为使用以下规则:

RewriteCond %{HTTP_USER_AGENT} iphone|safari [NC]
RewriteCond %{REQUEST_URI} ^/normal-page [NC]
RewriteRule ^(.*)$ /mobilepage/ [L,R=301]

确保在测试之前 清除缓存。另外,请记住,R=301是永久重定向,建议您在测试时将其更改为R=302,这是一个临时重定向。