htaccess将目录重写/重定向到URL

时间:2012-04-14 12:07:13

标签: .htaccess mod-rewrite redirect

这是我的.htaccess:

### PHP stuff
AddHandler application/x-httpd-php5 .shtml .html .htm

ErrorDocument 404 /404.shtml

# Protect the htaccess file
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>

Options +FollowSymlinks

<IfModule mod_rewrite.c>
### Turn the rewrite engine on
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.MAINSITE\.co/SECONDSITE.org/$ [NC]
RewriteRule ^(.*)$ http://www.SECONDSITE.org/$1 [R=301,L]

### We want everyone to go to http://www.MAINSITE.co instead of without the www
RewriteCond %{HTTP_HOST} !^www\.MAINSITE\.co$ [NC]
RewriteRule ^(.*)$ http://www.MAINSITE.co/$1 [R=301,L]

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

# Disable directory browsing
Options All -Indexes

所以问题是SECONDSITE实际上是作为MAINSITE的子目录而是我的主机,将该目录重定向到SECONDSITE.org

现在的问题是,如果我尝试转到http://www.SECONDSITE.org,它会将我重定向到http://www.MAINSITE.co/SECONDSITE.org/,这是一个有效的目录但这两个网站是完全无关的,我不希望任何人看到两个站点之间的任何连接。事实上,如果有人在访问MAINSITE时访问SECONDSITE目录,我会希望301重定向丢弃404,而不是301;

我意识到从非www到www重写导致上述错误所以我需要的是:

1)将非www MAINSITE.co重定向到www.MAINSITE.co

2)将对http://www.MAINSITE.co/SECONDSITE.org/的任何访问权限重定向到http://www.SECONDSITE.org/(如果可能,还包括网页)或更好地抛出404错误并向前往{{3}的任何人显示错误页面同时允许正常访问http://www.MAINSITE.co/SECONDSITE.org/

3)确保在任何情况下都没有无限循环

据我所知,我可能需要创建2个.htaccess文件,将其中一个放在MAINSITE中,另一个放在SECONDSITE目录中,但我不知道如何构建所有这些......

非常感谢你的帮助!正如你可以看到我的统计数据,我总是接受答案并对有用的建议进行投票,这篇文章也不例外。再次感谢。

1 个答案:

答案 0 :(得分:-1)

我终于开始工作了,这是我对类似问题的回答: https://stackoverflow.com/a/10168269/550975