Htaccess重定向与正则表达式匹配的URL

时间:2012-09-28 17:53:17

标签: regex .htaccess mod-rewrite url-rewriting rewrite

我正在尝试重定向符合以下条件的任何网址:

old-domain.com/marketplace/businesses/anything-here/ads/
old-domain.com/marketplace/businesses/anything-here/ads/anyhting-after-this-too
old-domain.com/marketplace/businesses/anything-here/ads/anyhting-after-this-too/anyhting-after-this-too/
etc...

new-domain.com/deal/

这是我.htaccess文件的样子

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteRule ^marketplace/businesses/([a-z0-9\-_]+)/ads/(.*) http://new-domain.com/deal/ [R=301,L]
</IfModule>

我已尝试过多种变体,包括将([a-z0-9\-_]+)([A-Za-z0-9_-\s\.]+)[a-zA-Z-_0-9]+)以及其他组合进行交换,但我似乎无法让它发挥作用。

另请注意我在网址中说anything-here的位置,这意味着我希望能够匹配那里的任何内容。

任何帮助都将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

问题是我在/marketplace/businesses/有一个.htaccess文件的物理目录阻止了它的运行。

我能够将其添加到.htaccess文件中,它就像魅力一样。

感谢所有看过的人,并采取了刺。

答案 1 :(得分:0)

我认为这可能有效。 (尽管没试过)

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^marketplace/businesses/(.*) http://new-domain.com/deal/$1 [NC]

这将翻译此

old-domain.com/marketplace/businesses/anything-here/ads/
old-domain.com/marketplace/businesses/anything-here/ads/anyhting-after-this-too
old-domain.com/marketplace/businesses/anything-here/ads/anyhting-after-this-too/anyhting-after-this-too/

到这个

http://new-domain.com/deal/anything-here/ads/
http://new-domain.com/deal/anything-here/ads/anyhting-after-this-too
http://new-domain.com/deal/anything-here/ads/anyhting-after-this-too/anyhting-after-this-too/

或者像这样我想保持部件完好无损,试试这个

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^marketplace/businesses/([a-zA-Z0-9\-_]+)/ads/([a-zA-Z0-9\-_]+) http://new-domain.com/deal/$1/$2 [NC]

这将被翻译为此

http://new-domain.com/deal/anything-here/anyhting-after-this-too

但我不认为其他两个会匹配正则表达式。