duanruinong0619
2018-10-21 12:29
浏览 94
已采纳

.htaccess mod_rewrite规则匹配干净的URL以及其他自定义参数

This is a .htaccess file I found for my REST API that rewrites URLs in this manner: rest.php/a/b/c/... -> rest.php?url=a/b/c/...

RewriteEngine On
RewriteRule ^(.*)$ rest.php?url=$1 [L,NC,NE]

I've been trying to modify this code to allow for additional GET parameters as in the current form it just ignores them and PHP only sees the 'url'. How could this be done?

I want something like this: rest.php/a/b/c/...?filter=word -> rest.php?url=a/b/c/...&filter=word

图片转代码服务由CSDN问答提供 功能建议

这是我为REST API找到的.htaccess文件,它以这种方式重写URL: rest。 php / a / b / c /... - > rest.php?url = a / b / c /...

  RewriteEngine On 
RewriteRule ^(。*)$ rest.php?  url = $ 1 [L,NC,NE] 
   
 
 

我一直在尝试修改此代码以允许其他GET参数,因为它只是忽略当前形式 他们和PHP只看到'url'。 怎么可以这样做?

我想要这样的东西: rest.php / a / b / c / ...?filter = word - > rest.php?url = a / b / c /...& amp; filter = word

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douyu7210 2018-10-21 19:28
    已采纳

    You need the flag QSA (Query String Append)

    RewriteEngine On
    RewriteRule ^(.*)$ output.php?url=$1 [QSA,NC,NE]
    

    Gives me for the url

    http://localhost/rest.php/a/b/c/?var2=val2
    

    the following GET parameters

    array(2) { ["url"]=> string(15) "rest.php/a/b/c/" ["var2"]=> string(4) "val2" } 
    

    For more info see Rewrite Flag QSA

    打赏 评论

相关推荐 更多相似问题