如何限制通过子域访问应用程序?

时间:2019-09-18 04:50:25

标签: apache .htaccess subdomain

我第一次将应用程序与域绑定,并且将我的应用程序与域绑定,并且它具有A Name

www.domain.de

我还有两个子域。

api.domain.de
admin.domain.de

现在我有一个静态应用程序,必须只能通过主域而不是子域进行访问。

我尝试过的事情

RewriteEngine On

RewriteCond %{HTTP_HOST} ={api.domain.de}[NC]
RewriteCond %{QUERY_STRING} ^({folderName})
RewriteRule ^$ http://{domain}.de//?%1 [R=301,L]

任何人都可以帮助实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

这可能是一种直接的方法...

它实现了 all 请求的外部重定向到与“ www.example.com”不同的任何主机名,同时保留了请求的路径和查询字符串。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^/?(.*)$ https://example.com/$1 [QSA,R=301]

但是,我希望有 个您想要重定向的请求。您在问题中提到的两个主机名都表明它们旨在用于特定目的。因此,最有可能应该重定向这些请求?

这可以使用额外的内部重写来实现,该重写可以在应用更通用的重定向之前处理此类请求

RewriteEngine On

RewriteCond %{HTTP_HOST} ^admin\.example\.com$
RewriteCond %{REQUEST_URI} !^/admin/
RewriteRule ^/?(.*)$ /admin/$1 [END]

RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^/?(.*)$ https://example.com/$1 [QSA,R=301]

显然,这些只是示例,您需要对其进行调整以适合您的特定需求。您的问题在这里含糊不清,因此这是我们能提供的最好的解决方案...

更新

<IfModule mod_rewrite.c>
RewriteEngine On 

RewriteCond %{HTTP_HOST} ^api.domain.de$ [OR]
RewriteCond %{HTTP_HOST} ^admin.domain.de$
RewriteRule (.*)$ http://domain.de/projectName/$1 [R=301,L]
</IfModule>

这对我有用... :)