重写规则:正则表达式从链接中删除变量

时间:2013-02-12 10:16:39

标签: regex apache mod-rewrite url-rewriting

我有这样的网址:

我方/ viewparty / 243方式 - 柏林 - 2013.html

其中url的可变部分是:

243方式 - 柏林 - 2013.html

我得知一个网址:

事件/方式 - 柏林 - 2013.html

如何使用apache重写规则执行此操作?我已设法删除“my-party / viewparty”,但我无法删除变量链接的部分。 非常感谢你

的Alessandro

1 个答案:

答案 0 :(得分:1)

以下将以格式映射任何URI:

my-party/viewparty/<digits>-<rest-of-file-name>.html

/events/<rest-of-file-name>.html

RewriteEngine On
RewriteCond %{REQUEST_URI} my-party/viewparty/\d+-([^\.]*\.html)$
RewriteRule .* /events/%1 [L]

它的工作方式是,它捕获(括号内的内容)请求uri的最后一部分(由美元符号表示),以.html结尾,前面是{{1}其中my-party/viewparty/\d+-表示一串数字,最小长度为一位数。然后,它会将此捕获的模式(由\d+表示)附加到%1中的/events/

如果要将(301 Moved Permanently)重定向到新URI,请使用:

RewriteRule

而且,如果RewriteEngine On RewriteCond %{REQUEST_URI} my-party/viewparty/\d+-([^\.]*\.html)$ RewriteRule .* /events/%1 [R=301,L] 部分不是变量,那么您可以简单地将party-in-berlin-2013替换为:

RewriteCond