mod 重写和查询字符串
我正在尝试重写 URL 中的一些查询字符串,如下所示:
foo.com/index.php?page=admin&view=news&action=edit&id=3
to
foo.com/admin/news/edit/3
但无法弄清楚...
如果我只有“页面”参数,它也应该有效,因为我并不总是当然,我的网址中有这 4 个参数(页面、视图、操作、id)。
有什么建议吗?
I'm trying to rewrite some query strings I have in my URL like this :
foo.com/index.php?page=admin&view=news&action=edit&id=3
to
foo.com/admin/news/edit/3
But can't figure it out...
it should also works if I only have the 'page' parameters for example, since I don't always have these 4 parameters (page,view,action,id) in my urls, of course.
any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
最简单的方法是在 PHP 代码中完成大部分解析。
使用像这样的重写规则
,然后从 PHP 访问请求 uri (
$_SERVER['REQUEST_URI']
),并将其解析为所需的多个部分。The easiest way is to do most of the parsing in PHP code.
Use rewriterules like
And then access the request uri (
$_SERVER['REQUEST_URI']
) from PHP, and parse it into as many parts as you want.我编写这段代码是为了将您想要使用的 url 类型解析为参数数组。它很灵活,这意味着您可以在每个页面上以完全不同的方式使用参数。您将需要将其与 Joel L 建议的请求处理程序一起使用。
它还允许理解老式的 $_GET 查询字符串,以防万一,并且它还覆盖 $_SERVER['PHP_SELF'] 以像您期望的那样运行,使用控制脚本的路径而不是整个 url你所有的参数。
我很快将其编辑为独立函数,因此请注意拼写错误。另外,欢迎提出任何改进此代码的建议。
对于 $http_server,请使用您站点的域。
因此,如果您根据以下要求使用此功能:
http://site.com/news/category/arts/page/5
您将得到以下变量:
I wrote this code to parse the kind of urls you want to use into an array of parameters. It's flexible, meaning you can use the parameters in totally different ways on every page. You will need it use it with a request handler like Joel L suggested.
It also allows for old-school $_GET query strings to be understood just in case, and it also overwrites $_SERVER['PHP_SELF'] to behave like you expect it to, with the path to the controlling script rather than the entire url with all your parameters.
I quickly edited it for use as a stand alone function, so watch out for typos. Also, any suggestions to improve this code are welcome.
For $http_server use your site's domain.
So if you use this on the request of:
http://site.com/news/category/arts/page/5
You will get the following variable back:
在您的 .htaccess 文件中放入以下两行:
接下来,不要像“example.com/index.php?var=1&var=2 ...”这样调用您的页面,而是像这样调用它们“example.com/1/2” ……”
In your .htaccess file put these two lines:
Next, instead of calling your pages like "example.com/index.php?var=1&var=2 ..." call them like this "example.com/1/2 ..."
除了 mod_rewrite 之外不需要任何东西,所有参数都是可选的。
Requires nothing but mod_rewrite, all parameters are optional.