Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用nginx重写来隐藏或清除url?_Nginx_Rewrite - Fatal编程技术网

使用nginx重写来隐藏或清除url?

使用nginx重写来隐藏或清除url?,nginx,rewrite,Nginx,Rewrite,你好 我一直在尝试重新编写正则表达式,但我是个新手。我有一个简单的站点,只有一个目录,我只想将domain.com/file.php?var=value重写为domain.com,确保用户在整个站点导航过程中只能在地址栏中看到domain.com(即使我开始使站点更复杂) 简单地说,这就是冻结url,虽然如果站点增长,我更愿意采用一些“干净的url”方法,但我仍然使用基本的php,我感觉我必须在http/1.1上使用rtfm,通常这种“干净的”url内容通常是通过整个站点的包装框架来完成的。浏览

你好

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

简单地说,这就是冻结url,虽然如果站点增长,我更愿意采用一些“干净的url”方法,但我仍然使用基本的php,我感觉我必须在http/1.1上使用rtfm,通常这种“干净的”url内容通常是通过整个站点的包装框架来完成的。浏览器仅显示该框架的URL,内容可以是任何内容

但实际上我并不推荐这样做,因为用户可能想将“脏”URL添加到书签中

这种类型的URL混淆会降低高级用户的可用性


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

我想冻结url是由营销欲望驱动的,所以从营销的角度来看,这也是一个缺点:你的用户将无法通过IM、电子邮件或facebook向他们的朋友发送他们喜欢的页面的链接,因此,它实际上降低了网站的吸引力,即使是对最无知的用户也是如此。

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

框架是不推荐的(特别是搜索引擎的原因),我试图坚持XHTML1.1严格(到目前为止还不错)。如果内容设计良好、易于导航、无论浏览器选择如何都可以访问、直观等。。。我想我可以和可爱的URL一起生活:)

我很乐意浏览任何关于优秀网站设计技术的rtfm材料,php、http/1.1和任何让你在凌晨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.
}

您还可以研究PHP框架,如CodeIgniter,它将为您处理所有PHP方面的问题


我猜不是网站“艺术化”,而是使用Flash,不知道如何在Flash电影中进行更改会影响url。这非常棘手,需要javascript向导。为什么domain.com/foo/bar与file.php有任何不同?var1=value&var2=value?很多网站都使用第一种形式,甚至是微软的。但如果这是您想要的,您可以为nginx编写一个正则表达式,将file.php?var1=value转换为/file/var/value/