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>

输出网址是这样的:

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

我正在寻找的是一种使此 URL 看起来像的方法:

http://mydomain.com/

有可能这样做吗?如果是,那怎么办?

任何 PHP 或纯 JavaScript 解决方案都可以

(请不要使用 jQuery 或 MooTools 或任何此类库,因为这是我整个网站中唯一的 JavaScript 函数,为了完成这个小任务而加载 50 到 100 KB 的库没有任何意义。)

请帮忙

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 回答