重定向网址.htaccess

时间:2013-10-28 16:33:17

标签: .htaccess

如何通过.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>

2 个答案:

答案 0 :(得分:0)

我不确定如何以你想要的方式去做,但有一个教程:

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

您也可以使用以下方法使用PHP执行此操作:

标题( “位置:filename.php”);

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

如果你不知道php,你所要做的就是:

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

?>

希望这有帮助

答案 1 :(得分:0)

您的重写规则中的正则表达式模式中不希望%7B%7D。在将规则应用于URI之前,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]