我正在构建一个 Web 应用程序,该应用程序的客户端 js 较多,数据从服务器分块推送。
我正在尝试为友好的 URL 解决方案实现一个解决方案,该解决方案采用如下 URL:
http://exmample.com/find/SomethingHere-or-there
这相当于一系列不可见的变量。所以它最终可能会这样处理:
我通过将友好 URL 作为参数传递然后返回完整 URL 来获取值。
我最初的实现使用 mod_rewrite 规则转发到提取友好 url 的脚本,查询数据库以获取匹配的友好 url 并返回完整的 url 及其映射到的所有参数,用此构建 url 字符串,然后转发到网络地址,然后将参数提取到 Web 应用程序前端。
但是,当我使用 php header("Location:http://example.com") 函数,以便他们看到带有参数的完整 URL。这是我试图满足的次要要求之一。
然后我想,由于我的网络应用程序的 js 很重,我是否应该尝试渲染页面,然后将参数从数据库中 ajax 发送到我的网络应用程序?这是最好的方法还是还有其他我不知道的技巧来实现这一目标?
没有启用 js 客户端不是问题。
附件是一些代码来概述我的初始实现:
//get the friendly url as a parameter
$goto = explode('=',$_SERVER['QUERY_STRING']);
//$goto[1] = SomethingHere-or-there
//build the friendly URL string
$forwardingURL = 'Location:http://'.$_SERVER['HTTP_HOST'].'/'.getForwardedURL($goto[1]);
//will be http://exmample.com/index.php?loc=London&type=2&priceCat=10-15
header($forwardingURL);
//function that returns the full url param string from the friendly url
function getForwardedURL($friendlyURL){
$friendlyURL = mysql_escape_string($friendlyURL);
$query = "
SELECT url
FROM FriendlyURLmapping
WHERE friendly_url = \"$friendlyURL\"";
$resultP = mysql_query($query)
//the full parametised URL will be in $row
$row = mysql_fetch_array($resultP, MYSQL_ASSOC);
return $row["url"];
}
通常的做法是将其中包含值的 URL 映射到参数化 URL。例如:
http://example.com/London/2/10-15
to
这可以在 .htaccess 中像这样完成:
RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ /index.php?loc=$1&type=$2&priceCat=$3 [L]
如果可能的话,我会避免重定向。如果您希望将完全不同的 URL 映射到参数,例如您的示例(/something-here
to /index.php?...
)那么您需要做的就是修改您的应用程序,以便将参数传递给显示页面的函数,或者设置变量并包含另一个执行处理的 PHP 文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)