【问题标题】:Mod Rewrite - Additional Query String After Already Rewriting One Query StringMod Rewrite - 已经重写一个查询字符串后的附加查询字符串
【发布时间】:2021-05-03 14:37:05
【问题描述】:

提前感谢您的帮助,因为我非常讨厌 mod_rewrite 并且无法理解它!

我目前在我的 .htaccess 中有一个规则,它将查询字符串中的两个参数转换为漂亮的 URL。

RewriteRule ^projects/([^/]+)/([^/]+)/?$ single-project.php?id=$1&section=$2 [L]

例如,这会将 URL /single-project.php?id=5&section=documents 转换为 /projects/5/documents/

我想要做的是有一个额外的查询字符串(通过新规则)将 /projects/5/documents/?subfolder=PDFs 转换为 /projects/5/文件/PDF/

一些注意事项:

  • 这个额外的查询字符串可能并不总是存在
  • 只有当 URL 为 /projects/[ANY_ID]/documents/ 时,此查询字符串才有效

我希望这是有道理的,并且您可以提供帮助!

干杯

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    对于您显示的示例,请尝试在您的 .htaccess 文件中遵循以下规则。请确保在测试 URL 之前清除浏览器缓存。已在规则文件中添加了 cmets 以供理解。

    RewriteEngine ON
    ##Op's already present rules, added 1 more flag in it QSA.
    RewriteRule ^projects/([^/]+)/([^/]+)/?$ single-project.php?id=$1&section=$2 [NC,QSA,L]
    ##Newly added Rule to perform internal rewrite for project id here.
    RewriteRule ^(projects)/([^/]+)/([^/]+)/(.*)/?$ $1/$2/$3/?subfolder=$4 [NC,QSA,L]
    

    【讨论】:

    • 我想就这样吧。非常感谢!
    • @DanielKilburn,欢迎您,欢呼雀跃,学习愉快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2015-08-05
    • 2019-02-03
    相关资源
    最近更新 更多