我们有一个多域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>
答案 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重定向浏览器。