Htaccess多域,但重定向一个域(除特定路径外)

时间:2019-02-20 10:01:41

标签: php apache .htaccess

我有一个配置为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/*.phpchiname.com/marketing/*.php时,它都需要显示而不重定向到https://www.greatwall.com,并且关于chiname.com的所有其他路径都需要重定向到{{1 }}。

当我从https://www.greatwall.com访问https://www.greatwall.com//landing文件夹中的任何一个文件夹时,无论我的rewriteCond我上面的内容总是会重定向到/marketing

注意,我没有服务器级别的特权,因此无法访问VirtualHost .conf文件。

1 个答案:

答案 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上进行了测试,因此应该有效。