.htaccess规则仅在旧网址输入时转发

时间:2011-12-13 19:39:30

标签: wordpress .htaccess

对于你们来说,这是一个棘手的问题。我的服务器上安装了一个WordPress站点,位于以下目录中:

的public_html / priestessentrepreneur / DSA / blogdsa

我有divinesparkastrology.com指向public_html / priestessentrepreneur / dsa

我有priestessastrology.com指向public_html / priestessentrepreneur / dsa / blogdsa

因此,我的(单数)WordPress安装过去常常将网站网址设置为http://www.divinesparkastrology.com/blogdsa,但我最近将其更改为http://www.priestessastrology.com/。当您输入http://www.divinesparkastrology.com/时,您正确转发到新网址http://www.priestessastrology.com/。但是,如果您尝试直接转到http://www.divinesparkastrology.com/blogdsa,则表示没有找到。

我希望http://www.divinesparkastrology.com/blogdsa及其所有子文件夹和文件指向http://www.priestessastrology.com/的新位置(目录结构从未更改过,只更改了基本URL)。如何更新.htaccess文件,以便新网址仍能正常运行,但当且仅当用户输入旧网址时,它们才会转发到新网址?

编辑:这是我/ dsa .htaccess文件中的当前内容:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^divinesparkastrology\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.divinesparkastrology\.com$
RewriteRule ^/?$ "http\:\/\/www\.priestessastrology\.com\/" [R=301,L]

这是我/ dsa / blogdsa .htaccess文件中的内容:

# 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

3 个答案:

答案 0 :(得分:0)

将以下RewriteRule添加到WordPress .htaccess文件中:

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

# added line
RewriteRule ^blogdsa/?$ / [R=301,L]
RewriteRule ^blogdsa/(.+)$ /$1 [R=301,L]

RewriteRule . /index.php [L]

注意:您将永远无法使用此规则访问blogdsa WordPress页面。

答案 1 :(得分:0)

不要在.htaccess级别执行此操作。在httpd.conf级别执行,使用非常基本的

NameVirtualHost x.x.x.x
<VirtualHost x.x.x.x>
    ServerName www.divinesparkastrology.com
    ServerAlias divinesparkastrology.com *.divinesparkastrology.com
    RedirectPermanent / http://priestessastrology.com
</VirtualHost>

通过这种方式,您可以执行重定向,而无需使用wordpress共享.htaccess,或者让两个站点共享一个共同的结构。 Apache将负责将所有请求重定向到新服务器名称,而无需在每次点击时加载/解析/重写.htaccess文件。

答案 2 :(得分:0)

将以下内容添加到 public_html / priestessentrepreneur / dsa / blogdsa 文件夹中.htaccess文件的顶部。在任何现有规则之前。

RewriteEngine On
RewriteBase /

#if request is on the divinesparkastrology domain
RewriteCond %{HTTP_HOST} ^(www\.)?divinesparkastrology\.com [NC]
#and it is for a folder starting with blogdsa
RewriteCond %{REQUEST_URI} ^/(blogdsa.*)$ [NC]
#redirect them to the same folder on the priestressastrology site
RewriteRule .* http://www.priestessastrology.com/%1 [L,R=301]

编辑:修改为仅包含divinesparkastrology而不包含www,更重要的是,由于blogdsa是两个网站的一部分,.htaccess应该放在blogdsa目录中,而不是dsa目录。