【问题标题】:Translate a url into a set of GET parameters将一个 url 翻译成一组 GET 参数
【发布时间】:2013-04-02 15:17:23
【问题描述】:

我想将带参数的 url 翻译成路径,即

http://www.example.com/?page=1 => http://www.example.com/1
http://www.example.com/?section=books&category=thriller&page=1 => http://www.example.com/books/thriller/1

然后我希望能够获取所有这些参数以在查询中使用它们以便根据这些参数进行选择,我不知道从哪里开始,我该怎么做?我正在使用这个 .htaccess 将我的所有请求重定向到 index.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

如何将路径“翻译”为一组参数以在查询中使用它们?

【问题讨论】:

  • 问题是什么?你的重定向不起作用?您的 php 脚本没有正确处理请求?
  • 上面写着:“我希望能够从路径中提取参数,以便能够使用它们对数据库进行查询”
  • 你的问题不是很清楚,你问了一些事情就相反了。

标签: php url parameters get


【解决方案1】:

你有它倒退。您希望用户以 http://www.example.com/books/thriller/1 的形式发出请求,然后将 that 重写为 index.php?qs=$1 以供 PHP 处理。这样用户会看到“友好”的 URL,而 PHP 会看到对其友好的格式。

所以你的重写规则会变成这样:

RewriteRule ^(.*)$ index.php?qs=$1 [QSA,L]

然后您可以通过以下方式访问其内容:

$myQueryVars = explode('/', $_GET['qs']);

http://www.example.com/books/thriller/1 变为

array( 'books', 'thriller', '1' )

【讨论】:

  • 这似乎有效,但如果用户添加了一些参数,我该怎么办?即http://www.example.com/books/thriller/1?a=234
  • @Harlandraka 那么您将拥有$_GET['qs']$_GET['a']
【解决方案2】:

我会做这样的事情......

RewriteRule ^([0-9]+)$ index.php?page=$1
RewriteRule ^([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/([0-9]+)$ index.php?section=$1&category=$2&page=$3

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多