: Strategy for mobile redirection and using alternative and canonical links I had a separate mobile site uploaded so as to make Google happy. My big problem is that I had a desktop page that
I had a separate mobile site uploaded so as to make Google happy. My big problem is that I had a desktop page that was once showing in the top 3 results on Google, and now it and its mobile alternative are showing up on the 3rd page or worse.
My structure is as follows. The desktop file is myserver.com/pellet-calculator.php. The mobile file is myserver.com/pelletcalculator.php. I have a PHP redirection working beautifully on the desktop file, placed at the very top of the page, in the following format:
<?php
$url = 'http://m.myserver.com/pelletcalculator.php';
// only check if the desktop cookie isn't present
if(!isset($_COOKIE['mobile'])) {
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows ce|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i',substr($useragent,0,4))) {
header('Location: '.$url.'');
}
}
?>
In my bid to resolve this issue, I did some reading. I didn't have any of the links as suggested by Google on their "Separate URL's" page (https://developers.google.com/webmasters/mobile-sites/mobile-seo/configurations/separate-urls?hl=en). I have therefore now added the following links to each file, directly under the <title> tags:
// following link on the desktop page
<link rel="alternate" media="only screen and (max-width: 640px)" href="http://m.myserver.com/pelletcalculator.php" >
// following link on the mobile page
<link rel="canonical" href="http://www.myserver.com/pellet-calculator.php" >
However I'm now worried about 2 things?
1) I'm now worried about my redirect. Google mentioned that Googlebot support javascript redirection, and I'm using PHP redirection. Should I get rid of the above redirect code and replace it with an equivalent javascript code? And if so, where should I place this javascript? Should it be placed above or below the <link> code above?
2) The "alternative" link above mentions media="only screen and (max-width: 640px)", but what if I want to specify all mobile browsers? How should I then rewrite this.
Many thanks for all and any advice.
More posts by @Vandalay111
3 Comments
Sorted by latest first Latest Oldest Best
I had the same problem but I worked it out. For the Javascript redirect code you will have to place it at the head. Between <head> and </head>. For the second question concerning reaching all browsers I specified the max-width and the min-width for several screen sizes.
I would suggest being explicit when you modify the headers. So for the redirect, Instead of having:
header('Location: '.$url.'');
You should have:
header("HTTP/1.1 301 Moved Permanently",true);
header("Location: ".$url,true);
exit();
This will then tell the browser you're doing a 301 redirect. Also if you plan on supporting really old browsers that don't understand the Location http header, then you should add some HTML just before the exit();. The exit(); is required to stop further execution of the php program when the redirection is set to take place.
1) Your PHP redirect is great. Google's own documentation recommends a 302 redirect, which is what PHP's header('Location:') function defaults to.
2) You could bump the max-width parameter for your media queries up to 737px which would then cover everything up to an iPhone 6+ sized screen. You could go higher to also include some tablets, but those start getting into the same range as some laptops, where you may not want them to get the mobile site.
Terms of Use Create Support ticket Your support tickets Stock Market News! © vmapp.org2024 All Rights reserved.