如何通过.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 :(得分: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]