Php .htaccess重写多个子域
我有一台服务器,例如123.123.123.123 它有两个指向它的URL www.mysite.com和 api.mysite.com 如何使www.mysite.com重定向到123.123.123.123/front 而api.mysite.com将重定向到123.123.123.123/api 对于www.mysite.com,不应在地址栏上显示www.mysite.com/frontPhp .htaccess重写多个子域,php,.htaccess,redirect,Php,.htaccess,Redirect,我有一台服务器,例如123.123.123.123 它有两个指向它的URL www.mysite.com和 api.mysite.com 如何使www.mysite.com重定向到123.123.123.123/front 而api.mysite.com将重定向到123.123.123.123/api 对于www.mysite.com,不应在地址栏上显示www.mysite.com/front 提前谢谢 您的问题的部分解决方案如下: RewriteCond %{HTTP_HOST} ^e
提前谢谢 您的问题的部分解决方案如下:
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^$ http://example.com/Front/index.php
您可以在站点root.htaccess中使用以下两条规则:
RewriteEngine On
# route www.example.com and example.com
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule !^front/ Front%{REQUEST_URI} [L,NC]
# route api.example.com
RewriteCond %{HTTP_HOST} ^api\.example\.com$ [NC]
RewriteRule !^api/ api%{REQUEST_URI} [L,NC]
重写规则^front/
使用否定条件匹配模式,这意味着如果请求URI
不是以/front/
开头,则执行此规则,但我设法使其与htaccess一起工作:
RewriteCond %{HTTP_HOST} www.mysite.com [NC,OR]
RewriteCond %{HTTP_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ front/$1 [L]
你为什么不使用虚拟主机?因为OP不想让URL显示子文件夹路径,这会起作用吗?是的,它不起作用。我最近得到的是RewriteRule^(.*)front/$1[L],它将www.mysite.com重定向到123.123.123.123/front,而不显示子文件夹路径,但它将中断api.mysite.com,因为它将搜索123.123.123.123/front/api/您需要创建多个规则作为规则。你可以用你想出来的或者我在《关于》中给你的。你需要根据theseYes@anubhava来设计解决方案,这就是我想要的meant@anubhava抱歉,我不是.htaccess的专业人士,所以我不太明白这一点。仍在努力学习,如果您能帮我澄清这个疑问,我将不胜感激:重写条件是否正确?因此
RewriteCond%{HTTP\u HOST}^api\.example\.com$[NC]
表示如果满足api.example.com,则表示它不受约束。然后执行重写规则^api/api%{REQUEST_URI}[L,NC]
这意味着如果url不是api.example.com/api/那么执行api.example.com?先谢谢你,你解释得对<代码>^(www\)?结合了答案的两个条件RewriteCond%{HTTP\u HOST}^api\.example\.com$[NC]
表示执行RewriteRule
是请求中的主机名isapi.example.com
<代码>重写规则^api/api%{REQUEST\u URI}[L,NC]意味着执行规则是REQUEST\u URI不以/api/
开头api%{REQUEST_URI}
意味着将当前URI附加到/api
路径。您不需要两个单独的条件。看到我上面的答案。是的,我意识到这很相似,^(www\)?
结合了这两种情况。我不知道第二行是怎么工作的。我们将在下面发表评论。