Wordpress Mobile - 更改部分 URL 而不是重定向到首页?

问题描述:

我被要求在一个我没有帮助建立的客户站点上做一些维护工作.该网站是用 Wordpress 构建的,移动设备上的任何用户都将被重定向到更适合移动设备的网站版本.问题是,如果移动用户单击原始站点(主页、内页等)的任何链接,无论是什么链接,他们总是会被重定向到移动站点的首页.我想要做的是将当前 URL 的一部分从 .ca 替换为 .mobi,以便移动用户直接重定向到原始页面的移动版本,而不是移动主页.

I've been called to do some maintenance work on a client site that I didn't help build. The site is built with Wordpress, and any user on a mobile device will be redirected to a more mobile-friendly version of the site. The problem is that if the mobile user clicks any link to the original site (home page, inner page, etc), no matter what link it is, they always get redirected to the front page of the mobile site. What I am trying to do is replace part of the current URL from .ca to .mobi so that the mobile users get redirected straight to the mobile version of the original page instead of the mobile home page.

我查看了如何用JavaScript? 并尝试了 Matt 和 Juan 的建议,但它们都没有奏效,反而导致错误.我希望有人能在这里帮助我.

I looked at how to replace part of the URL with JavaScript? and tried Matt and Juan's suggestions, but neither of them worked and instead cause errors. I'm hoping someone can help me here.

目前,这是 header.php 中的代码,用于检测用户是否在移动设备上,

Currently, this is the code in header.php that detects if the user is on a mobile device,

    /* --- DETECT MOBILE BROWSER ---*/

$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|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|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|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|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))){
    header('Location: http://sitenamehere.mobi');
}
/* --- END DETECT MOBILE BROWSER ---*/

位置标头需要包含完整的 URL - 目前它只包含主页的 URL.因此,您需要获取当前 URL 并将 .ca 替换为 .mobi,然后将位置标头更改为此.这应该是正确的:

The location header needs to contain the full URL - currently it only contains the URL of the homepage. Therefore you need to obtain the current URL and replace the .ca with .mobi, then change the location header to this. This should be along the right lines:

header('Location: ' . str_replace('.ca', '.mobi', $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]));