2014-12-01 103 views
0

URL应该去为什么我的RewriteRule无法正常工作?正则表达式匹配

from: http://myurl.com/anything/?_escaped_fragment_=/article/1234 
    to: http://myurl.com/rubriken/detail/articleuid/1234/ 

我重写规则是这样的:

RewriteRule ^.*\?_escaped_fragment_=\/article/(.*)$ /rubriken/detail/articleuid/$1/ [R=301,L] 

我测试了http://regex101.com/正则表达式和它匹配。但它在我的.htaccess中不起作用,也不在http://htaccess.madewithlove.be/上。我的错误在哪里?

回答

2

因为?_escaped_fragment_=/article/1234没有在重写规则使用

用途:

RewriteCond %{QUERY_STRING} _escaped_fragment_=/article/(.*)$ 
RewriteRule^/rubriken/detail/articleuid/%1/? [R=302,L] 

变化[R=302,L][R=301,L]当测试顺利进行。

+0

thx很多,'%{QUERY_STRING}'做到了。还需要编辑中的'?',否则我会得到一个ERR_TO_MANY_REDIRECTS。 – nbar 2014-12-01 15:57:25

+1

是的,也适用于'[R = 301,L,QSD]'而不是'?',但只有在Apache 2.4 – Croises 2014-12-01 15:59:59