2016-01-21 125 views
1

我试着找我的问题,但我已经找到了答案,最近没有工作 - 尤其是因为我很新的编辑.htaccess文件。重写规则多301重定向

我有一个已经编程动态生成网页的副本,以适应位置的网站。例如,example.com/help/work/成立,使约100重复看起来像这样的:example.com/help/work/?city=Washington&state=DC城市和国家,每个page.There动态变化吨的这些变化,我想301重定向所有城市和状态参数的页面所以他们指向原始页面(example.com/help/work/)。

经过一番研究,我能找到一个重写规则,帮助我做到这一点通过网页基础的网页上,但只能用网页:

RewriteCond %{QUERY_STRING} ^city=Philadelphia&state=PA$ 
RewriteRule ^$ http://example.com/? [R=301,L] 

与所有的说,我有两个部分问题:

  1. 有没有办法写这个,使其目标子目录页? (我只能让它做索引)
  2. 有没有一种方法可以在单个RewriteRule中使用通配符(。*),所以example.com/help/work/?city=Washington&state=DC及其所有城市/州的变体都指向原始页面(example.com/help/work/)?

回答

0

我对你的要求有点迷茫。看起来你想要指出每个城市和国家这个单一页面。 http://example.com/help/work/看看这是你在找什么。

RewriteCond %{QUERY_STRING} city=.+&state=.+ 
RewriteRule ^([^/]+)/([^/]+)/?$ http://example.com/$1/$2/? [R=301,L] 
+0

谢谢!为了澄清一点,这里有什么,我试图做一个更好的例子: 现在我有如example.com,example.com/idea/good/和example.com/help/work页面。这些是我希望所有人都能看到的原始的,规范的页面。 也有复制这些页面,并增加了“城市/州”参数生成的页面。因此,我列出的每个url示例都有大约100个变体动态地创建了url。我试图让所有的城市/州页面都重定向到它们各自的规范页面。那有意义吗? – WyGuy

+0

只是为了提供更多的见解,这是我一直在尝试的另一个。我在正确的轨道上吗? RewriteCond%{QUERY_STRING}^city =。*&state =。* $ RewriteRule^help/work/$ http://example.com/help/work/$1 [R = 301,L] – WyGuy

+0

好的,我更新了我的回答是我想你想澄清的。请看看这是否适合你。 –

0

是的,您可以在Rewrite规则中使用正则表达式捕获组来捕获request_uri。

像这样

RewriteCond %{QUERY_STRING} ^city=.+&state=.+$ 
RewriteRule ^(.*)$ http://example.com/$1? [R=301,L]