Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
Php 如何确保始终只使用干净的URL?_Php_.htaccess - Fatal编程技术网

Php 如何确保始终只使用干净的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,并且仍然可以工

假设我的网站会做一些事情,如果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,并且仍然可以工作,而不会进入无限循环。

如果你想到“路由”在这种情况下,您可以将参数转换为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语法指南,以便根据自己的需要进行自定义