htaccess中重定向的一般规则

时间:2013-05-23 11:31:18

标签: .htaccess redirect

我想在htaccess中进行一些重定向。我将详细解释我正在尝试做什么,最后我会告诉你我的问题,所以如果你不想要很多解释就向下滚动。

因此,为了让您了解我在做什么,这里有一个示例:如果我输入 www.mysite.com/oldpage ,它应该将我重定向到 www.mysite.com/new页的。为此我用过:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]

Redirect /oldpages http://www.mysite.com/newpages

问题是我想将它用于多个页面。所以我想要那个:

mysite.com/oldpage/firstarticle 

重定向到

mysite.com/newpage/firstarticle

所有文章都一样。我想重定向所有:

Redirect /oldpages http://www.mysite.com/newpages
Redirect /oldpages/firstarticle http://www.mysite.com/newpage/firstarticle
Redirect /oldpages/secondarticle http://www.mysite.com/newpage/secondarticle

但我有冲突,因为 Redirect / oldpage 适用于每个案例。

这就是为什么(在这里我不做什么!!!)我需要使用一般规则,如:

Redirect /oldpage/(*) http://mysite.com/newpage/(*)
Redirect /oldpage/(any numeric characters-don't need them)/(*) http://mysite.com/NEWSINGLEPAGE/(*)

而不是(*)它应该是任何字符,但在新链接中使用它们。

有人知道如何为多个页面制作此重定向吗?

感谢您的时间!

!!!! 我不知道它是否可能但是如果我可以在HTACCESS中使用IF声明那么它会很糟糕......有点像:

if (adress is /redirect) Redirect to newpage.html;
  else if (adress is /redirect/(some number)/(.*)) Redirect to NEWSINGLEPAGE/$1.html
       else if (adress is /redirect/(.*)) Redirect to newpage/$1.html

2 个答案:

答案 0 :(得分:1)

更改

Redirect /oldpage/(*) http://mysite.com/newpage/(*)

RedirectMatch /oldpage/(*) http://mysite.com/newpage/$1

答案 1 :(得分:0)

试试这个

RewriteRule ^oldpage/(.*)$ /newpage/$1 [R=301,L]