2013-10-28 93 views
0

我将如何通过.htaccess文件重定向以下网址。我有这些particlular网址,问题是他们的特殊字符:重定向网址.htaccess

blog/%7Blink%7D 
blog/page/2012/%7Blink%7D 
blog/page/2013/%7Blink%7D 
%7Blink7D% 
?cID=225 

的.htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteRule ^blog/%7Blink%7D?$ http://www.mywebsite.com/ [R=301,L] 
    RewriteRule ^blog/page/2012/%7Blink%7D?$ http://www.mywebsite.com/ [R=301,L] 
    RewriteRule ^blog/page/2013/%7Blink%7D?$ http://www.mywebsite.com/ [R=301,L] 
    RewriteRule ^%7Blink7D%?$ http://www.mywebsite.com/ [R=301,L] 
    RewriteRule ^?cID=225?$ http://www.mywebsite.com/ [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

回答

0

你不想在你的重写规则在您的正则表达式模式%7B%7D。该URI获取其应用到它的规则,这意味着你需要的{}字符之前解码:

RewriteRule ^blog/\{link\}$ http://www.mywebsite.com/ [R=301,L] 
RewriteRule ^blog/page/2012/\{link\}$ http://www.mywebsite.com/ [R=301,L] 
RewriteRule ^blog/page/2013/\{link\}$ http://www.mywebsite.com/ [R=301,L] 
RewriteRule ^\{link\}$ http://www.mywebsite.com/ [R=301,L] 

不能匹配一个重写规则的查询字符串(一切?之后),所以你需要匹配对%{QUERY_STRING}变量:

RewriteCond %{QUERY_STRING} cID=225 
RewriteRule^http://www.mywebsite.com/ [R=301,L] 
+0

你是说这将工作'重写规则^博客/ \ {%7Blink%7D \} $ http://www.mywebsite.com/ [R = 301, L]' –

+0

@RobMorris这对我很有用,这4条规则将取代你在你的htaccess文件中有'%7B'和'%7D'的4条规则在模式 –

+0

@RobMorris没有看到我的答案,你想'^博客/ \ {link \} $','%7B' ges解码为'{',所以你**不想**'%7B ',你**想要**'{'。 –

0

我不知道怎么办呢,你想要的方式,但有一个教程:

http://webmaster.iu.edu/tools-and-guides/maintenance/redirect-htaccess.phtml

您也可以使用PHP通过或者使用做到这一点:

header(“location:filename.php”);

但是,您可能必须将该代码放在每个网页上,但您可以将其添加到索引页。

如果你不知道PHP所有你需要做的是:

<?php 
header("location:newfile.php"); 
//or you can add a url: 
header("location:http://newwebsite.com/"); 

?> 

希望这有助于