【问题标题】:pretty url with $_GET [duplicate]带有 $_GET 的漂亮网址 [重复]
【发布时间】:2013-05-04 07:43:11
【问题描述】:

我正在尝试获取漂亮的网址,但我对 htaccess 一无所知。

试图得到类似的东西
这个:

domain.com/?page=login
domain.com/?page=user&uid=2

到:

domain.com/login/
domain.com/user/2

我必须像这样指定所有内容吗?:

domain.com/Page?a=arg1&b=arg2&c=arg3
domain.com/Page/arg1/arg2/arg3

还是可以“更有活力”?

【问题讨论】:

  • 那么您打算尝试学习如何使用 mod_rewrite 吗?您是否尝试过使用它并遇到问题?或者你只是想让我们告诉你怎么做?更不用说可能有数千个关于 SO 的问题以及互联网上关于如何做到这一点的大量资源。
  • Here 是我在类似线程中的解决方案。
  • 我认为你倒退了,你应该将 domain.com/login/ 重定向到你的 htaccess 中的 domain.com/?page=login。
  • 迈克·布兰特,实际上都是 :)

标签: php url mod-rewrite get


【解决方案1】:

如果这是一个新项目,我建议使用 Zend Framework 等框架。他们内置的默认路由以您想要的方式接受 url。

例如,对用户 ID 为 123 的用户登录页面的请求可能如下所示: /user/login/id/123

在这里阅读更多: http://framework.zend.com/manual/2.1/en/user-guide/routing-and-controllers.html

还有像Cake 或Code Ignitor 这样的其他框架可以做同样的事情。但是,我相信他们(和 Zend)确实需要在 apache 上安装 mod_rewrite。

【讨论】:

  • 是的,它是一个新项目,但出于学习目的,我正在尝试构建自己的“类似系统”的模板,并让自己熟悉不同的语言以及从头开始构建事物的方式。我希望这是有道理的:)
【解决方案2】:

我喜欢使用 http://www.generateit.net/mod-rewrite/ 。当您使用该工具 2 或 3 次时,很容易弄清楚它是如何完成的。

你可以定义哪些参数取哪个“点”

所以得到你的:

domain.com/?page=login
domain.com/?page=user&uid=2

到:

domain.com/login/
domain.com/user/2

你可以使用:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /?page=$1&uid=$2 [L]

您的“页面”问题看起来有点困难。

我猜你必须为每个“页面”或文件添加重写规则。

至少我不知道该怎么做。

如果它是一个文件夹,您可以通过给该文件夹自己的 .htaccess 来解决这个问题

编辑:

RewriteEngine On
RewriteRule ^Page/([^/]*)/([^/]*)/([^/]*)\.html$ /Page.php?a=$1&b=$2&c=$3 [L]

可能会奏效。我在生成器中的prefix 下添加了Page/

【讨论】:

  • 这应该是一条评论。这不是一个完整的答案。
  • 好吧,那让我改一下
  • 谢谢!这很有用,但如果我不必为每个页面创建新规则,那就太好了
猜你喜欢
  • 2012-10-18
  • 1970-01-01
  • 2011-05-10
  • 2011-11-28
  • 2016-06-23
  • 2014-04-22
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多