Alternierende und andere automatische Weiterleitungsskripte

Übersicht

Auf dieser Seite finden Sie viele verschiedene Codes, um die Weiterleitung Ihrer Webseite einzurichten. Standardmäßig ist der JavaScript-Weiterleitungs-Code dazu gedacht, ihn direkt in den HTML-Code Ihrer ursprünglichen Webseite einzubinden. Sie sollten jedoch auch Server-Seiten-Optionen zur Einrichtung der Weiterleitung verwenden.

Clientsetige Weiterleitung mit Hilfe von JavaScript

Dieses Verfahren ist das Einfachste. Fügen Sie den JavaScript-Code unten in das head-Tag der HTML-Seite ein und ersetzen Sie den Platzhalter " http://m.beispiel.com" im Code mit Ihrer mobilen Webseiten-Domain (inklusive http://). 

<script src="http://static.mobilewebsiteserver.com/redirect.js" type="text/javascript"></script>
<script type="text/javascript">
   DM_redirect("http://m.example.com");
</script>

Hinweis: Einige mobile Geräte, wie alte Blackberry-Modelle unterstützen kein JavaScript. Wenn die Weiterleitung von diesen Modellen auch unterstützt werden soll, müssen Sie eine Serverseitige Weiterleitung verwenden.

Serverseitige Weiterleitung mit Hilfe von Snippet

Die Serverseitige Methode ist zwar etwas komplexer zu implementieren, jedoch können Sie mobile Geräte verwenden, welche kein JavaScript unterstützen. Nachfolgend finden Sie Code-Beispiele für PHP, ASP und JSP. Bitte ersetzen Sie den Platzhalter " http://m.beispiel.com" im Code mit Ihrer mobilen Webseiten-Domain (einschließlich http://).

PHP

Fügen Sie den Code am Anfang der index.php Datei ein. Achten Sie darauf "m.beispiel.com" mit Ihrer eigenen URL zu ersetzen. 

<?php
$mobileDomain = "http://m.example.com";
$no_redirect = @$_REQUEST['no_redirect'];
if($no_redirect != "true")
{
    $agent = @$_SERVER['HTTP_USER_AGENT'];
    @ini_set('default_socket_timeout',1);
    $handle = @fopen("http://m.mobilewebsiteserver.com/api/public/detect?ua=" . urlencode($agent), "r");
    @stream_set_timeout($handle, 1);

    /* check if we should redirect*/
    $result = @fread ( $handle , 1 );

    @fclose($handle);
    if ($result == "y") {
        $currenturl = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
        $mobileUrl = $mobileDomain ."?url=" .urlencode($currenturl);
        $mobileUrl=$mobileUrl."&dm_redirected=true";
        header("Location: ".$mobileUrl);
        exit;
    }
}
?>

ASP

Fügen Sie den Code am Anfang der index.asp Datei ein. Achten Sie darauf "m.beispiel.com" mit Ihrer eigenen URL zu ersetzen.

<%Dim no_redirect, detecturl, handle, output, currenturl, mobileUrl
no_redirect = Request.QueryString("no_redirect")
If no_redirect <> "true" Then
currenturl = ( "http://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL") ) & "?" & Request.ServerVariables("QUERY_STRING")
detecturl = "http://m.mobilewebsiteserver.com/api/public/detect?ua=" & Server.UrlEncode(Request.ServerVariables("HTTP_USER_AGENT"))
set handle = CreateObject("MSXML2.ServerXMLHTTP")
handle.setTimeouts 5000,5000,5000,5000
handle.open "GET", detecturl, false
handle.send ""
output = handle.responseText
mobileUrl = "http://m.example.com" & "?url=" & Server.UrlEncode(currenturl) & "&dm_redirected=true"
If output = "y" Then
Response.Redirect(mobileUrl)
End If
End If
%>

JSP

Fügen Sie den Code am Anfang der index.jsp Datei ein. Achten Sie darauf "m.beispiel.com" mit Ihrer eigenen URL zu ersetzen.

<%@page import="java.net.URLEncoder"%>
<%@page import="java.net.URL"%>
<%@page import="java.net.HttpURLConnection"%>
<%
if(! "true".equals(request.getParameter("no_redirect")))
{
String currenturl = request.getRequestURL() + (request.getQueryString() != null ? "?" + request.getQueryString() : "");
try{
String ua = URLEncoder.encode(request.getHeader("user-agent"), "utf-8");
HttpURLConnection con = (HttpURLConnection)new URL("http://m.mobilewebsiteserver.com/api/public/detect?ua=" + ua).openConnection();
con.setConnectTimeout(5000); //set timeout to 5 seconds
char c = (char)con.getInputStream().read();
con.disconnect();
if(c == 'y')
{
String mobileUrl = "http://m.example.com";
response.sendRedirect(mobileUrl + "?url=" + URLEncoder.encode(currenturl) + "&dm_redirected=true");
}
}
catch(Exception e){
e.printStackTrace();
}
}
%>

.htaccess (Fortgeschritten)

Installieren Sie den folgenden Code am Ende der vorhandenen .htaccess Datei. Bitte achten Sie darauf ein Backup Ihrer bestehenden .htaccess Datei zu erstellen, bevor Sie Änderungen vornehmen. Ein Fehler bei der Installation des .htaccess Codes kann Ihre Webseite zum Absturz bringen. Ersetzen Sie jede Referenz von "beispiel.com" mit Ihrer eigenen Domain.

RewriteEngine on
######### Set cookie for users who return to desktop site
RewriteBase /
RewriteCond %{QUERY_STRING} no_redirect=true [NC]
RewriteRule ^(.*)$ - [co=dm_show_classic:true:.example.com:7200:/]
# check no 'dm_show_classic' cookie is set
RewriteCond %{HTTP_COOKIE} !dm_show_classic
# check if no_redirect was sent in the url
RewriteCond %{QUERY_STRING} !no_redirect=true [NC]
# check if the user agent matches supported mobile devices
RewriteCond %{HTTP_USER_AGENT} ((.*iPhone.*)|(.*iPod.*)|(.*BlackBerry.*)|(.*Android.*)|(.*webOS.*)|(.*Windows\ CE.*)|(.*IEMobile.*)|(.*Opera\ Mini.*)|(.*Opera\ Mobi.*)|(.*HTC.*)|(.*LG-.*)|(.*LGE.*)|(.*SAMSUNG.*)|(.*Samsung.*)|(.*Symbian.*)|(.*Nokia.*)|(.*PlayStation.*)|(.*PLAYSTATION.*)|(.*Nintendo\ DSi.*)|(.*TMO-US_LEO.*)|(.*SEC-SGH.*)|(.*BB10.*))
# check if the request isn't for a static file
RewriteCond %{REQUEST_FILENAME} !\.(jpg|gif|png|css|js|txt|ico|pdf|bmp|tif|mp3|wav|wma|asf|mp4|flv|mpg|avi|csv|doc|docx|xls|xlsx|ppt|pptx|zip|rar|tar|gz|dmg|iso)$ [NC]
#### If empty query string then no need to include it ##############
RewriteCond %{QUERY_STRING} ^$
# extract the current page url including the query string
RewriteCond http://%{HTTP_HOST}%{REQUEST_URI} ^(.*)$
# redirect the request to mobile domain and pass the page url as a parameter
RewriteRule ^(.*)$ http://m.example.com?url=%1 [R=301,L]