Php 如何确保始终只使用干净的URL?
假设我的网站会做一些事情,如果URL看起来像这样Php 如何确保始终只使用干净的URL?,php,.htaccess,Php,.htaccess,假设我的网站会做一些事情,如果URL看起来像这样mysite.com/index.php?myparam=test 在.htaccess中,我添加了以下行: #RewriteRule ^([a-z]+)$ /index.php?myparam=$1 [L] 太棒了!URL mysite.com/test将相应重定向,一切正常 我想去掉肮脏的URL,这样如果有人手动键入mysite.com/index.php?myparam=test,他将被重定向到mysite.com/test,并且仍然可以工
mysite.com/index.php?myparam=test
在.htaccess中,我添加了以下行:
#RewriteRule ^([a-z]+)$ /index.php?myparam=$1 [L]
太棒了!URL mysite.com/test将相应重定向,一切正常
我想去掉肮脏的URL,这样如果有人手动键入mysite.com/index.php?myparam=test,他将被重定向到mysite.com/test,并且仍然可以工作,而不会进入无限循环。如果你想到“路由”在这种情况下,您可以将参数转换为URL并从输入的URL获取执行参数,如果有人手动输入执行参数,您可以将他重定向到从路由机制获取的URL
有关symfony 1.4框架中路由机制的一些信息:
我已经在几个小时内为我的大学项目写了一个路由机制,所以有可能有一个。如果不是,最流行的[IMHO]路由库是Horde:
好的,在网上进一步阅读之后,多亏了萨尔曼的回答,我找到了问题的答案:) 下面的代码将重写脏url以清除一个 重写cond%{u请求}^.\?myparam=([a-zA-Z]+) 是否重写规则^(.*)$/%1?[R=301,L] 请注意,“/%1”后面的问号非常重要,因为将它放在那里(重定向目标上)将清除查询字符串 之后,下面的代码将把干净的url重定向到脏的url,而不更改url(仍然保持干净) 重写规则^([a-zA-Z]+)$/index.php?myparam=$1[L] 这不会因为使用了只响应您的请求而不响应服务器端重定向的_请求而导致无限循环(我认为) 您可能需要阅读mod_rewrite语法指南,以便根据自己的需要进行自定义