如何交换WordPress和商店位置

时间:2017-02-04 16:26:06

标签: wordpress .htaccess redirect

我在根目录中有一个博客设置,在子目录中有一个电子商务商店,如:

    http://example.com             //the blog is here
    http://example.com/ecommerce/  //this is the shop

我想交换它们以便

    http://example.com          //this is the shop  
    http://example.com/blog/    //the blog is here

我知道如何移动文件并进行所有数据库更改,以便博客和商店都能正常运行。问题在于重定向。如何将用于转到博客的链接重定向到新位置,而不会导致所有商店网址也重定向?

也就是说,我可以将电子商务目录中的重定向代码添加到根目录,这样可以处理商店的链接。但是,如果我然后从根目录重定向到博客目录以使博客生效,则商店链接将失败。

有办法做到这一点吗?

为了澄清这一点,以下是博客的一些链接:

    http://example.com/
    http://example.com/contact-us/
    http://example.com/category/culture/

Abd这里有一些商店:

    http://example.com/ecommerce/
    http://example.com/ecommerce/contact_us.php
    http://example.com/ecommerce/baby-power-id=558 

2 个答案:

答案 0 :(得分:0)

唯一非常强大的方法是将它们全部单独列出或按模式列出。但也许可以通过重定向文件不存在但在新位置存在的任何内容来实现。像这样:

RewriteCond %{REQUEST_URI} ^/([^/]+)$
RewriteCond %{CONTEXT_DOCUMENT_ROOT}/$1 !-f
RewriteCond %{CONTEXT_DOCUMENT_ROOT}/blog/$1 -f
RewriteRule ^ /blog/$1 [R,L=301]

它假设:

  • 您的所有旧博客网址都不包含任何正斜杠
  • 没有检查查询字符串的网址与商店
  • 不同
  • 没有使用其他网址重写

否则请告诉我。

答案 1 :(得分:0)

要单独或按模式重定向旧博客网址,您可以执行以下操作。

完成博客目录

对于每个完整目录,请执行以下操作:

RewriteRule ^(category/.*)$ /blog/$1 [R=301,L]

为每个目录使用一个,更改'类别'作为每个目录的名称,它将被重定向到' / blog /'下面的相同名称。显然,商店不能使用相同的目录名称。

单独的博客网址

对于其他每个网址,都有一条规则:

Redirect 301 /contact-us/ /blog/contact-us/

这应该可以在不影响商店的情况下移动博客网址。

<强>商店

对于商店,只需使用:

RewriteRule ^ecommerce/(.*)$ /$1 [R=301,L]