使用nginx重写来隐藏或清理URL?

时间:2009-02-27 23:21:15

标签: nginx rewrite

问候。

我一直在试图修改正则表达式并重写,但我是新手。我有一个简单的网站,只有一个目录,我想要的是将domain.com/file.php?var=value重写为domain.com,确保用户只能在网站导航中的地址栏中看到domain.com(即使我开始使网站更复杂)。

简单地说它冻结了网址,虽然如果网站增长了我宁愿做一些“干净网址”的方法,但我仍然处于基本的php,我觉得我必须在http / 1.1上rtfm

5 个答案:

答案 0 :(得分:4)

你可以使用这样的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.
}

答案 1 :(得分:3)

通常,这种类型的“干净”URL内容通常使用整个站点的包装框架来完成。浏览器仅显示该帧的URL,内容可以是任何内容。

但实际上我不推荐它,因为用户可能想要将“脏”URL加入书签。

此类网址模糊处理会降低高级用户的可用性。

不要成为一个混蛋,但我通常只会在“艺术”网站上看到这种类型的网址混淆,这些网站更关心地址栏的外观,而不是网站的可用性。通过增强的可用性让您的用户满意是一种更好的长期方法恕我直言。

答案 2 :(得分:0)

我认为冻结网址是由营销愿望推动的,所以从营销的角度来看,这也是不利因素:您的用户将无法通过即时消息,电子邮件向他们的朋友发送他们喜欢的页面的链接或Facebook,所以它实际上降低了你的网站的吸引力,即使对于最无知的用户。

答案 3 :(得分:0)

我不(知识渊博)认为在地址栏中显示php变量是安全的(尽管它们会在某些浏览器的状态栏中显示...)。理想情况下,用户不知道幕后使用的网站是什么 - 我正在为初学者配置错误页面。是的,对于美学也是如此。如果我可以重写到domain.com/foo/bar,我会很高兴;假设nginx会处理“转换回丑陋的URL”,如果它有这样的请求,我认为它与位置指令有关。但是让domain.com/file.php?var1=value&var2=value有点让我烦恼,让我觉得我太暴露了网站。

框架不推荐(特别是'搜索引擎的cos),我试图坚持xhtml 1.1严格(到目前为止很好)。如果内容设计得很好,易于浏览,无论浏览器选择,直观等都可以访问......我想我可以使用可爱的URL:)

我很乐意浏览任何关于良好网页设计技术的rtfm材料,php,http / 1.1以及任何让你走的“是的!这就是我一直在寻找的东西!”凌晨4点。

谢谢:)

[如果我理解这个网站的权利,这应该是对原帖的回复,而不是答案......对不起]

答案 4 :(得分:-1)

您还可以查看一个PHP框架,例如Code Igniter,它将为您处理所有PHP方面。

http://codeigniter.com/