将/index.php重定向到/folder/index.php,而不显示301重定向或更改URL

时间:2013-12-27 04:46:49

标签: .htaccess redirect

我们有一个多域webstore,在虚拟主机上运行单个数据库,使用以下.htaccess分隔不同语言的域。

在操作上它运行正常,但它将每个重定向文件显示为301重定向,当然应该如此。

1)是否可以重定向而不显示301重定向(而是显示200)?

2)是否可以将index.php重定向而不显示301重定向(而是显示200)或更改URL?

<IfModule mod_rewrite.c>    
RewriteEngine On
# Redirect all files except robots.txt to Store subfolder
RewriteCond %{HTTP_HOST} domain1\.com$ [NC]
RewriteRule !^robots\.txt$ /folder1/$1 [R=301,NC,L]
RewriteCond %{HTTP_HOST} domain2\.com$ [NC]
RewriteRule !^robots\.txt$ /folder2/$1 [R=301,NC,L]
RewriteCond %{HTTP_HOST} domain3\.com$ [NC]
RewriteRule !^robots\.txt$ /folder3/$1 [R=301,NC,L]
</IfModule>

1 个答案:

答案 0 :(得分:0)

  

是否可以重定向而不显示301重定向(而是显示200)?

这称为重写,而不是重定向。重定向是发送到浏览器以加载不同 URL的响应,当它执行此操作时,它将在位置栏中显示它加载的内容。重写完全停留在服务器端,浏览器对此一无所知,因此位置栏不会改变,因为它从未被告知加载新URL。

  

是否可以让index.php重定向而不显示301重定向(而是显示200)或更改网址?

你想要这样的东西:

RewriteCond %{HTTP_HOST} domain1\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteRule ^(.*)$ /folder1/$1 [L]

请注意,没有R=301标志,告诉mod_rewrite重定向浏览器。