问候。
我一直在尝试理解正则表达式和重写,但我是新手。我有一个简单的站点,只有一个目录,我想要的只是将 domain.com/file.php?var=value 重写为 domain.com,确保用户在整个站点导航过程中只会在地址栏中看到 domain.com(即使我开始让网站变得更复杂)。
简单地说,它冻结了 url,虽然如果网站增长,我宁愿做一些“干净的 url”方法,但我仍然在基本 php,我觉得我必须在 http/1.1 上进行 rtfm
您可以像这样使用 nginx 重写规则:
rewrite ^([^.]*)$ /index.php
发送所有不包含“.”的请求 到您的 index.php 脚本。在你的php脚本中,爆破请求url获取传入的参数,然后调用你想要的php页面:
#URL /people/jack_wilson
$url_vars = explode('/',$_SERVER['request_uri']); # array('','people','jack_wilson');
$page = $url_vars[1];
if($page == 'people'){
$username = $url_vars[2];
require('people.php'); #handle things from here.
}
通常,这种“干净”的 URL 内容通常是通过整个站点的包装框架来完成的。浏览器仅显示该框架的 URL,内容可以是任何内容。
但我实际上并不推荐它,因为用户可能希望将“脏”URL 加入书签。
这种类型的 URL 混淆会降低高级用户的可用性。
不要成为一个混蛋,但我通常只在“艺术”网站上看到这种类型的 URL 混淆,这些网站更关心地址栏的外观而不是网站的可用性。恕我直言,通过增强可用性让您的用户满意是一种更好的长期方法。
我想冻结 url 是由营销需求驱动的,所以从营销的角度来看,这也是不利的:您的用户将无法通过 IM、电子邮件或 Facebook 将他们喜欢的页面的链接发送给他们的朋友,因此,即使对于最无知的用户,它实际上也会降低您网站的吸引力。
我不(有意识地)认为在地址栏中显示 php 变量是安全的(尽管它们无论如何都会显示在某些浏览器的状态栏中......)。理想情况下,用户不会知道该网站在幕后使用的是什么——我正在为初学者配置错误页面。是的,对于美学也是如此。如果我可以重写到 domain.com/foo/bar 我会很高兴;假设 nginx 如果收到这样的请求会处理“转换回丑陋的 URL”,我认为它与位置指令有关。但是拥有 domain.com/file.php?var1=value&var2=value 有点让我烦恼,让我觉得我暴露了太多网站。
不推荐使用框架(尤其是“搜索引擎的 cos”),我正在尝试坚持使用 xhtml 1.1 Strict(到目前为止还不错)。如果内容设计良好,易于导航,无论浏览器选择如何,都可以访问,直观等......我想我可以忍受可爱的 URL :)
我很乐意浏览任何关于良好网页设计技术、php、http/1.1 的 rtfm 材料以及任何让你走“是的!这就是我一直在寻找的东西!” 凌晨 4 点。
谢谢 :)
[如果我对这个网站的理解正确,这应该是对原始帖子的回复,而不是对答案......对不起]
您还可以查看一个 PHP 框架,例如 Code Igniter,它将为您处理所有 PHP 方面。