我有一个配置为htaccess的多域,这意味着根据输入的域名,显示相关内容,并将其重定向到任何域的https版本
我在.htacess中尝试过的内容的一小段
RewriteEngine on
RewriteCond %{HTTP_HOST} ^arabme.com$ [NC]
RewriteRule ^(.*)$ https://www.arabme.com$1 [R=301,L]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^chiname.com$ [NC]
RewriteCond %{REQUEST_URI} !^/(landing|marketing)
RewriteRule ^(.*)$ https://www.greatwall.com$1 [R=301,L]
但是在chiname.com
上,我想将所有重定向到http://www.greatwall.com
,除了两个文件夹。 /landing
和/marketing
。
因此,每当用户输入chiname.com/landing/*.php
或chiname.com/marketing/*.php
时,它都需要显示而不重定向到https://www.greatwall.com
,并且关于chiname.com
的所有其他路径都需要重定向到{{1 }}。
当我从https://www.greatwall.com
访问https://www.greatwall.com/
或/landing
文件夹中的任何一个文件夹时,无论我的rewriteCond我上面的内容总是会重定向到/marketing
。
注意,我没有服务器级别的特权,因此无法访问VirtualHost .conf文件。
答案 0 :(得分:1)
可以说最好在主 httpd-vhosts.conf 文件中的<VirtualHost>
指令中执行此操作-但这不是一个选择:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^arabme.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.arabme.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^chiname.com$ [NC]
RewriteCond %{REQUEST_URI} !^/(landing|marketing)
RewriteRule ^(.*)$ https://www.greatwall.com/$1 [R=301,L]
假设您的.htaccess
文件位于文档根目录下,那么您会遇到几个错误:
1:您无需重复RewriteEngine On
2:您在/
中的 greatwall.com 之后错过了一个RewriteRule
,这意味着重定向将转到 https://www.greatwall.comwhatever 而不是 https://www.greatwall.com/whatever
我在htaccess.madewithlove.be上进行了测试,因此应该有效。