0

我将如何通过 .htaccess 文件重定向以下网址。我对这些特定网址的问题是它们包含特殊字符:

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

.ht 访问:

<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>
4

2 回答 2

0

你不想在你的重写规则中使用你的正则表达式模式%7B%7DURI 在应用规则之前被解码,这意味着您需要{}字符:

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]
于 2013-10-28T16:49:55.550 回答
0

我不确定如何按照您想要的方式进行操作,但有一个教程:

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

您也可以使用 php 执行此操作,方法是:

标头(“位置:文件名.php”);

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

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

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

?>

希望这可以帮助

于 2013-10-28T16:44:05.053 回答