1

私はいくつかのJavascriptとPHPを使用して、ブラウザービューポートを取得し、訪問者のブラウザー/デバイスに基づいて適切なレイアウトを動的に提供しています。私のindex.phpファイルは次のようなものです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php
if (isset($_GET['width']) AND isset($_GET['height'])) {
  $layoutWidth = $_GET['width'];
      if ( $layoutWidth >= 240 && $layoutWidth <= 900 ) {
        require_once('layout1.php');
      } else {
         require_once('layout2.php');
      }
} else {
  echo "<script language='javascript'>\n";
  echo "  location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
            . "&width=\" + document.documentElement.clientWidth;\n";
  echo "</script>\n";
  exit();
}
?>
</body>
</html>

出力URLは次のようになります。

http://mydomain.com/index.php?&width=1600&height=812

私が探しているのは、このURLを次のようにする方法です。

http://mydomain.com/

そうすることは可能ですか?はいの場合、どのように?

PHPまたはプレーンJavaScriptソリューションならどれでも

(これは私のWebサイト全体で唯一のJavaScript関数であり、この小さなタスクを実行するためだけに50〜100 KBのライブラリをロードする意味がないため、jQueryやMooToolsなどのライブラリは使用しないでください。)

助けてください

4

1 に答える 1

0

.htaccessを使用してURLを書き換えることができるはずです(コードは一般的なリソースタイプとindex.phpループを除外します):

# Turn rewriting on
Options +FollowSymLinks
RewriteEngine On
# Redirect requests to index.php
RewriteCond %{REQUEST_URI} !=/index.php
RewriteCond %{REQUEST_URI} !.*\.png$ [NC]
RewriteCond %{REQUEST_URI} !.*\.jpg$ [NC]
RewriteCond %{REQUEST_URI} !.*\.css$ [NC]
RewriteCond %{REQUEST_URI} !.*\.gif$ [NC]
RewriteCond %{REQUEST_URI} !.*\.js$ [NC]
RewriteRule .* http://mydomain.com/

次に、を使用$_SERVER["REQUEST_URI"]して実際に要求されたURIにアクセスし、そこから高さと幅の値を解析できます。例えば

$height = 0;
$width = 0;
$requestParts = explode('?', $_SERVER['REQUEST_URI']);
$requestParts = explode('&', $requestParts['1']);
foreach ($requestParts as $requestPart) {
    $getVarParts = explode('=', $requestPart);
    if ($getVarParts['0'] == 'height') {
        $height = $getVarParts['1'];
    } else if ($getVarParts['0'] == 'width') {
        $width = $getVavParts['1'];
    }
}
于 2012-04-30T10:48:25.733 に答える