问候。
我一直在试图修改正则表达式并重写,但我是新手。我有一个简单的网站,只有一个目录,我想要的是将domain.com/file.php?var=value重写为domain.com,确保用户只能在网站导航中的地址栏中看到domain.com(即使我开始使网站更复杂)。
简单地说它冻结了网址,虽然如果网站增长了我宁愿做一些“干净网址”的方法,但我仍然处于基本的php,我觉得我必须在http / 1.1上rtfm
答案 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方面。