在htaccess中坚持使用RewriteRule

时间:2014-11-19 16:46:45

标签: apache .htaccess mod-rewrite redirect

我被困在重定向我的网址。我想我几乎在那里但不能监督我所缺少的东西。当我测试时,重定向会转到正确的网址,但会将旧网址粘贴到新网址上。

这就是我被困的地方:

RewriteCond %{QUERY_STRING} lang=uk&page=page
RewriteRule ^(.*)$ domain/page/ [L,R=301]

RewriteCond %{QUERY_STRING} lang=fr&page=page
RewriteRule ^(.*)$ domain/page/ [L,R=301]    

RewriteCond %{QUERY_STRING} lang=uk&page=about
RewriteRule ^(.*)$ domain/about/ [L,R=301]

RewriteCond %{QUERY_STRING} lang=uk&page=about
RewriteRule ^(.*)$ domain/about/ [L,R=301]    

RewriteCond %{QUERY_STRING} lang=uk&page=news
RewriteRule ^(.*)$ domain/info/ [L,R=301]

RewriteCond %{QUERY_STRING} lang=fr&page=news
RewriteRule ^(.*)$ domain/info/ [L,R=301]

如果我所有重定向个人,我也很害怕我遇到一个大的htaccess文件。会减慢速度吗?

Lang = nl,uk,us,fr都去了同一页。 并非所有页面=在更改后获得相同的页面名称。 提前谢谢,

1 个答案:

答案 0 :(得分:1)

您可以首先具有特定重定向,其中页面名称与目标不同,后跟单个规则,其中查询参数page具有与目标URI相同的值。因此,您的代码只能缩短为这两条规则。

RewriteEngine On

RewriteCond %{QUERY_STRING} lang=(fr|uk|us|nl)&page=news
RewriteRule ^ /info/? [L,R=301]

RewriteCond %{QUERY_STRING} lang=(fr|uk|us|nl)&page=([^&]+)
RewriteRule ^ /%2/? [L,R=301]