.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 变量 id
、field
等指向当前查看的新站点。我希望重写后的 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&field=health&data=25-10-2021&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 数据