1

我的 .htaccess 中有以下代码,该代码位于子域下的 wordpress 博客中。现在我将博客移到子文件夹下,并从子域放置了 301 重定向,但是当我访问 blog.domain.com 上的页面时,我得到 500 内部服务器错误,而不是得到 301 重定向到http://domain.com/blog/

# Use PHP5 as default
AddHandler application/x-httpd-php5 .php


RewriteCond %{HTTP_HOST} ^blog\.stream-tek\.com
RewriteRule ^(.*)$ http://www.stream-tek.com/blog/$1 [R=301]


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

现在,当我删除以下代码时:

# BEGIN WordPress
# END WordPress

我从子域页面获得 301 重定向,但是当我返回它时它不起作用。我需要那部分代码,因为没有它,wordpress clean urls 将无法工作。

上面的 htaccess 文件有什么问题,因为我不是这方面的专家。

感谢帮助。

4

1 回答 1

1

问题是 WP 的东西甚至在你的重定向有机会启动之前就完全控制了。

改变规则的顺序。

# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
RewriteEngine On
RewriteBase /blog/
<IfModule mod_rewrite.c>

RewriteCond %{HTTP_HOST} ^blog\.stream-tek\.com$ [NC]
RewriteRule ^ http://www.stream-tek.com/blog%{REQUEST_URI} [R=301,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]

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

</IfModule>
# END WordPress
于 2013-09-06T10:49:07.270 回答