Wordpress重定向冲突 - htaccess

时间:2018-04-19 21:12:17

标签: php .htaccess redirect

(我的旧网站位于/dotclear/index.php/目录中。)

我想对新网页进行一些自定义重定向,并将所有其余内容重定向到主页。

目前,我指定的重定向全部重定向到主页,而我未指定的页面重定向到没有前缀的相同URL。

如果没有重定向301规则,/dotclear/index.php/somepage会重定向到/somepage,我希望它重定向到/

使用重定向301规则,/doctlear/index/oldpage重定向到/,我希望它重定向到/newpage

这是我尝试过的。

# 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
Options -Indexes


Redirect 301 /dotclear/index.php / 
Redirect 301 /dotclear/index.php/oldpage /new-page //redirects to home but shoudln't
Redirect 301 /dotclear/index.php/anotheroldpage /anothernewpage //redirects to home but shouldn't

1 个答案:

答案 0 :(得分:1)

这种方法几乎没有问题:

  1. 在WP默认规则之后进行重定向
  2. Redirectmod_rewrite规则混合
  3. 以错误的顺序重定向规则
  4. 通过所有修复,您可以在.htaccess中使用这些指令:

    Options -Indexes
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^dotclear/index\.php$ / [L,R=301,NC]
    
    RewriteRule ^dotclear/index\.php/oldpage/?$ /new-page [L,R=301,NC]
    
    RewriteRule ^dotclear/index\.php/anotheroldpage/?$ /anothernewpage [L,R=301,NC]
    
    RewriteRule ^index\.php$ - [L,NC]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    
    </IfModule>
    # END WordPress
    

    确保使用新的浏览器进行测试以避免旧缓存。