【问题标题】:Rewrite URL with multiple parameters php用多个参数php重写URL
【发布时间】:2017-02-03 09:40:09
【问题描述】:

我的页面重定向 URL 如下所示,带有多个参数。

http://example.com/search.php?layout=details&Keyword=mobile&view=product&CategoryId=1026&product_id=93477

我从那个 URL 获取所有参数值以从数据库中获取数据。

因此,当我加载此页面时,我需要显示最用户友好的 URL,如下所示。在那个 URL 中应该只包含我正在使用我的重定向 URL 的 product_id 的值

http://example.com/93477.htm

我已尝试重写此 URL,如下所示。但我不能使用参数“categoryId”和“keyword”

重写 ^/([a-zA-Z0-9/-]+).htm /search.php?layout=details&view=product&Keyword=$3&CategoryId=$2&product_id=$1 最后;

请任何人帮助我成功完成它..

问候,

维涅什·库马尔·K

【问题讨论】:

  • 如果原始 url 的查询字符串中的每个参数都用于帮助构建 sql 查询,那么如果没有它们,您将找不到相同的记录。原始 url 中的每个必需参数都应该映射到重写 url 中

标签: php url mod-rewrite nginx url-rewriting


【解决方案1】:

试试这个伙伴,

RewriteEngine on
RewriteCond %{THE_REQUEST} \s/search\.php\?layout=details&Keyword=([^&]*)&view=product&CategoryId=([^&]*)&product_id=([^&]*) [NC]
RewriteRule ^ /%2/%3/%1? [L,NE,R=302]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /search.php?layout=details&Keyword=$2&view=product&CategoryId=$3&product_id=$1 [L,QSA]

原网址:

http://example.com/search.php?layout=details&Keyword=mobile&view=product&CategoryId=1026&product_id=93477

改写后的网址:

http://example.com/93477.htm

更新 1:

[QSA] 现在已添加到上述代码中,以便附加查询字符串以检索 使用 PHP $_GET 的动态参数

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa

更新 2:

编辑 .htaccess 代码以使 Keyword 和 CategoryId 动态

【讨论】:

  • 感谢您的回答,但在原始 URL 中,CategoryId 和关键字将针对每个 URL 动态变化。所以在这种情况下,我们应该使用你的代码。
  • 使用 [QSA] 获取附加的查询字符串。让我更新答案等待队友
  • @VigneshKumar 更新了代码,检查并更新我是否解决了你的问题伙伴?
猜你喜欢
  • 2012-11-22
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
相关资源
最近更新 更多