.htaccess 重写 url 帮助使用 GET 变量指向 URL 中的值 [关闭]

Posted

技术标签:

【中文标题】.htaccess 重写 url 帮助使用 GET 变量指向 URL 中的值 [关闭]【英文标题】:.htaccess rewrite url help using GET variable to point values in URL [closed] 【发布时间】:2021-12-11 04:20:39 【问题描述】:

我有一个动态 URL 为 (www.example.com/news?id=999&field=health&data=25-10-2021&title=some-title) 的站点,其中 GET 变量 idfield 等指向当前查看的新站点。我希望重写后的 URL 看起来像 www.example.com/news/health/25-10-2021/some-title。谁能帮助我,我尝试了几种方法?非常感谢您的帮助。

最后一次尝试:

# Rewrite news
<IfModule mod_rewrite.c> 
RewriteEngine on
RewriteRule ^/new/id-(.*)-field-(.*)-data-(.*)-title-(.*)$ news?id=$1&field=$2&data=$3&title=$4 [NC,L]
</IfModule>

【问题讨论】:

欢迎来到 SO,请在您的问题中分享您尝试过的 htaccess 规则文件,谢谢(不是我的反对票)。 /news?id=999&amp;field=health&amp;data=25-10-2021&amp;title=some-title - 这个 URL 不是实际的端点(可能是 news.php 吗?),这意味着您已经有了重写 URL 的指令?这些可能需要更改,但当然,指令的顺序很重要,因此您应该包含完整的 .htaccess 文件。不过很好奇……您发布的规则是与您的示例中的一个完全不同的 URL 匹配?!值得注意的是,您的示例网址中根本不存在“id”? 【参考方案1】:

我相信您有正确的解决方案,但 RegEx 有点不对劲。这是我认为应该的。

# Rewrite news
<IfModule mod_rewrite.c> 
RewriteEngine on
RewriteRule ^\/news(?:\/|\/\.php)?\?id=(.*)&field=(.*)&data=(.*)&title=(.*)$ news/$2/$3/$4 [NC,L]
</IfModule>

您可以在这里进行测试。 https://regex101.com/r/hOk66q/1

我为可能的文件扩展名和/或尾部斜杠添加了一个非捕获组。

【讨论】:

看起来您正试图从/向同一个 URL 重写请求?!但是,mod_rewrite rule 有点“偏离”。 啊,我明白你的意思了。我会进行编辑 没有工作。 :(

以上是关于.htaccess 重写 url 帮助使用 GET 变量指向 URL 中的值 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 .htaccess 重写 URL 而不会影响 $GET 数据

htaccess 重写 URL 以仅删除一个 php 文件的 $_GET 查询[重复]

htaccess mod 用斜杠将 $_GET 重写为变量

使用 PHP 和 .htaccess 重写 URL

url重写.htaccess的问题

如何在php中重写Get变量的url [重复]