.htaccess重定向问题 - 没有完成

时间:2012-02-28 04:51:02

标签: .htaccess redirect

所以,目前,我的.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

RewriteCond %{HTTP_HOST} ^colorspace\.am$ [OR]
RewriteCond %{HTTP_HOST} ^www\.colorspace\.am$
RewriteRule ^portfolio\/?(.*)$ "http\:\/\/i\.colorspace\.am\/portfolio$1" [R=301,L]

我想将我的根目录中的所有内容移动到子域(我已经完成)但我不希望人们不能使用这些链接。 www.colorspace.am/portfolio需要重定向到i.colorspace.am/portfolio,其中包含的所有集合(即/ portfolio / YYYYMMDD)也需要动态“调整”(www.colorspace.am/portfolio) / YYYYMMDD - &gt; i.colorspace.am/porfolio/YYYYMMDD

注意:i.colorspace.am包含2011年的内容; ii.colorspace.am将包含2012.它们是两个完全不同的WP安装,具有各自的数据库。不确定它是否相关但是......

似乎正在发生的事情是/ portfolio被指示重定向到i.colorspace.am/portfolio,但无论出于何种原因,它最终都会出现在i.colorspace.am

如果有办法我可以将任何www.colorspace.am/folder/sub-folder重定向到i.colorspace.am/folder/sub-folder(通配符?)..这会很棒。但在这一点上,我对同一个完全正常工作的重定向感到高兴。

注意:重定向代码由我的管理面板生成。我试过了

Redirect /portfolio http://i.colorspace.am/portfolio

但它导致了“太多重定向”错误。

1 个答案:

答案 0 :(得分:0)

重定向后
RewriteRule ^portfolio\/?(.*)$ http//i.colorspace.am/portfolio$1 [R=301,L]

规则

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

再次访问。这就是它在i.colorspace.am结束的原因。

添加这两条规则

RewriteCond %{HTTP_HOST} ^(?:www\.)?i.colorspace\.am$
RewriteRule protfolio -[L]

按顺序提到。

也改变(只是一个小优化)

RewriteCond %{HTTP_HOST} ^colorspace\.am$ [OR]
RewriteCond %{HTTP_HOST} ^www\.colorspace\.am$
RewriteRule ^portfolio\/?(.*)$ http//i.colorspace.am/portfolio$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(?:www\.)?colorspace\.am$ 
RewriteRule ^portfolio\/?(.*)$ http//i.colorspace.am/portfolio$1 [R=301,L]

并按照下面提到的顺序将其放在IfModule块内。

.htaccess

中使用以下内容
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#add these 2 lines:
RewriteCond %{HTTP_HOST} ^(?:www\.)?i.colorspace\.am$
RewriteRule protfolio -[L]

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

RewriteCond %{HTTP_HOST} ^(?:www\.)?colorspace\.am$ 
RewriteRule ^portfolio\/?(.*)$ http//i.colorspace.am/portfolio$1 [R=301,L]

</IfModule>
# END WordPress