我在我的域名上使用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
但这打破了整个网站,给我一个错误.....
如果有人可以帮助我,我真的很感激!我一直在扯掉头发!
答案 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]