2013-10-28 184 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/"); 

?> 

希望這有助於