.htaccess重定向问题

时间:2012-02-16 09:22:26

标签: .htaccess redirect directory

我在我的域名上使用WordPress。我最初将它安装在子目录中:

www.example.com/wpblog /

我现在已将博客移至我网站的根目录中,我已将固定链接结构从../2011/03/name-of-post更改为../ name-of-post。

我正在尝试将所有链接重定向到使用旧网址和结构的博客。

我使用此代码成功地从/ wpblog /重定向到站点根目录:

RewriteEngine On
RewriteBase /
Redirect 301 /wpblog/ http://www.example.com/

但现在我需要更改OLD永久链接结构以删除/ 2011/03 /,留下www.example.com/name-of-post(来自:www.example.com/wpblog/2011/03 /名称的-POST)。我添加了这段代码,它可以100%运行:

RedirectMatch 301 /([0-9]+)/([0-9]+)/(.*)$ http://www.example.com/$3

问题是,这也会破坏我的媒体文件的链接(www.example.com/wp-content/2011/03/name-of-media)。因此,我需要从永久链接重定向(但不是/ wpblog / redirect)中排除/ wp-content /目录。我更改了永久链接重定向:

RewriteCond %{REQUEST_URI} "/wp-content/"
RewriteRule 301 /([0-9]+)/([0-9]+)/(.*)$ http://www.example.com/$3

但这打破了整个网站,给我一个错误.....

如果有人可以帮助我,我真的很感激!我一直在扯掉头发!

1 个答案:

答案 0 :(得分:0)

试试这个:

RewriteEngine on
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

RewriteCond %{REQUEST_URI} ^/wp-content/ [NC]
RewriteRule %{REQUEST_FILENAME} !-f
RewriteRule %{REQUEST_FILENAME} !-l
RewriteRule /(?:[\d]+)/(?:[\d]+)/(.*)$ http://www.grvhi.com/$1 [R=301,L]

RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L]