首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将动态url重定向到新的动态URL,该URL在htaccess中也进行了修饰

将动态url重定向到新的动态URL,该URL在htaccess中也进行了修饰
EN

Stack Overflow用户
提问于 2017-05-20 16:42:30
回答 1查看 1.2K关注 0票数 1

我有一个网站,其中有动态URL,他们目前没有美化。我已经重新工作的网站和包括漂亮的URL,但真正的动态文件夹结构/文件名也发生了变化。

为了更好地解释,当前的动态URL如下所示

http://example.com/liveguide/year.php?year=2017

相同页面的新动态url是

http://example.com/shows/show-list.php?year=2017

我使用以下方法:

代码语言:javascript
复制
RewriteRule ^shows/(199[5-9]|200[0-9]|20[0-1][0-7])/?$ /shows/show-list.php?year=$1 [L]

来启用漂亮的URLS,如

http://example.com/shows/2017

所以我想做的是,如果有人遵循原始动态URL的链接,他们最终会使用新的干净URL。到目前为止我刚刚

代码语言:javascript
复制
RewriteRule ^liveguide/year.php /shows/show-list.php [R=301,L]

这将重定向到正确的页面,但在地址栏中留下的是丑陋的URL。我怎么做才能使新的,漂亮的URL在地址栏中?

有人来访

http://example.com/liveguide/year.php?year=2017

最后,他们在地址栏上看到

http://example.com/shows/2017

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-21 05:49:43

您只需要匹配查询字符串,查询字符串位于一个单独的变量中,并用于RewriteCond中,该字符串捕获到%1%2等。如下所示:

代码语言:javascript
复制
RewriteCond %{QUERY_STRING} ^year=(\d{4})$
RewriteRule ^liveguide/year\.php$ /shows/%1? [R=301,L]

当我们在这里的时候,你真的只需要匹配那些确切的年份吗?如果/shows/1234也被重写了会有什么关系吗?可能不会,您可以从PHP中返回404,所以一个更简单的规则是可以的,就像上面提到的任意四个数字一样。它也将在不改变未来几年的情况下发挥作用。

代码语言:javascript
复制
RewriteRule ^shows/(\d{4})/?$ /shows/show-list.php?year=$1 [L]

目标通常不是与您想要的完全匹配,而只是为了确保没有任何其他(站点的其他部分)会匹配不应该匹配的内容。更简单的规则以后更容易维护和审查。您的脚本必须已经能够处理坏数据,所以让它处理详细的检查,而不是不必要地重复它。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44088442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档