用于url重写的正则表达式,但将源URL保留在地址栏中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于url重写的正则表达式,但将源URL保留在地址栏中相关的知识,希望对你有一定的参考价值。

我需要重写一个网址。

来源:domain / event-detail / sport / event /?event = 171990

目标:domain / event-detail /?event = 171990

但源URL应显示在地址栏中。

我想到了类似的东西:

if url contains "event-details" and /*/*/?event=XX (/event-details/*/*) -> /event-detail/?event=XX

然后是重写规则来显示源URL。怎么做?

答案

这应该做的伎俩:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/event-detail/.+/.+/$
RewriteCond %{QUERY_STRING} ^event=d+$
RewriteRule (.*) http://www.example.com/event-detail/? [R=301,L]

按照您的逻辑,捕获包含event-detail/.+/.+/并具有event=d+等查询参数的URI

以上是关于用于url重写的正则表达式,但将源URL保留在地址栏中的主要内容,如果未能解决你的问题,请参考以下文章

nginx url地址重写功能

nginx地址重写模块

友好的 URL htaccess 重写规则正则表达式 [关闭]

重写正则表达式,至少有一个字符的 URL

要重写的URL的正则表达式

使用可选查询字符串参数重写 URL 的正则表达式