2013-10-12 71 views
0

过时的Wordpress图像插件给我留下了超过4000个404错误。批次301使用htaccess从动态URL重定向到静态页面

为了解决这个问题,我想批301重定向几千年附件链接URL来对原始的源图像文件指出:

的旧网址,让一个404错误是这样的:

http://www.hongkonghustle.com/?pagename=album&?pp_album=main&pp_cat=default&pp_image=zombie_boy_tattoo_lady_gaga_rick_genest.jpg

我想他们每个重定向到的wp-content /照片文件所在的目录实际存在:

http://www.hongkonghustle.com/wp-content/photos/zombie_boy_tattoo_lady_gaga_rick_genest.jpg

从我读过的,我相信我应该改变我的htaccess文件,并使用{QUERY_STRING}添加一个RewriteCond,但我不知道如何。

此外,我应该把相对于我目前的htaccess的变化?

我现在的htaccess文件包括以下内容:

Options +Indexes 
Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^hongkonghustle\.com 
RewriteRule ^(.*)$ http://www.hongkonghustle.com/$1 [R=permanent,L] 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://www.hongkonghustle.com/$1/ [L,R=301] 

RewriteEngine On 
RewriteBase/
<Files wp-config.php> 
Deny from all 
</Files> 

<Files wp-config.php> 
Deny from all 
</Files> 
Options +Indexes 
IndexOptions -FancyIndexing 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

再次感谢Anubhava!你越来越近了!

现在转到/可湿性粉剂内容/照片/目录,但该网址仍是不正确?

hongkonghustle.com/wp-content/photos/ & /网页=专辑&%253fpp_album =主& pp_cat =默认& pp_image = zombie_boy_tattoo_lady_gaga_rick_genest.jpg

我们需要最终的网址是:

hongkonghustle.com/wp-content/photos/zombie_boy_tattoo_lady_gaga_rick_genest.jpg

因此,hongkonghustle.com/wp-content/photos/IMAGE_FILENAME.JPG

我认为它几乎解决了!如果您对如何完成此操作有任何想法,请更新我。真诚的感谢!

回答

1

最后我做301重定向像这样的htaccess:

Options +Indexes 
Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{QUERY_STRING} ^pagename=album&\??pp_album=main&pp_cat=default&pp_image=(.*)$ 
RewriteRule .* /wp-content/photos/%1? [L,R=301] 

RewriteCond %{HTTP_HOST} ^hongkonghustle\.com 
RewriteRule ^(.*)$ http://www.hongkonghustle.com/$1 [R=permanent,L] 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://www.hongkonghustle.com/$1/ [L,R=301] 

RewriteEngine On 
RewriteBase/
<Files wp-config.php> 
Deny from all 
</Files> 

<Files wp-config.php> 
Deny from all 
</Files> 
Options +Indexes 
IndexOptions -FancyIndexing 


# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 
0

你的代码改成这样:

Options +Indexes +FollowSymLinks -MultiViews 

RewriteEngine on 
RewriteBase/

RewriteCond %{QUERY_STRING} (^|&)pp_image=([^&]+) [NC] 
RewriteRule ^$ /wp-content/photos/%1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^hongkonghustle\.com$ [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule^%{REQUEST_URI}/ [L,R=301] 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule>  
# END WordPress 

<Files wp-config.php> 
Deny from all 
</Files> 

IndexOptions -FancyIndexing 
+0

请不要把代码中的注释,它不是可读。通过编辑将其添加到您的问题中。 – anubhava

+0

谢谢!对不起!会做。 –

+0

嗨Anubhava,恐怕我给你提供了不完整的信息。我原本从#BEGIN Wordpress中删除了当前htaccess文件中的所有内容。我尝试添加您提到的htaccess,但导致内部服务器错误。这可能是由于我提供给您的信息不完整。再次感谢您的输入!非常感谢。 –