.htaccess Apache -如何根据我们访问站点的URL编写规则

4szc88ey  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(105)

我们有两个URL指向同一个apache示例一个URL用于管理员,另一个用于客户端访问管理员URL时,应允许/admin,而通过客户端URL访问时,应拒绝/admin您能否帮助提供示例apache重写规则

https://example-admin.com/admin - Admins allowed to access admin url
https://example-client.com/admin - Client should not allowed to access admin url
https://example-client.com/client - Client allowed to access client site

更新日期:

我在下面尝试阻止客户端URL的管理上下文路径。但这不起作用:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/auth/admin(/.*)? [NC]
RewriteRule ^ - [F]
polkgigr

polkgigr1#

RewriteCond %{REQUEST_URI} ^/auth/admin(/.*)? [NC]
RewriteRule ^ - [F]

/auth是从哪里来的?示例URL中没有。但是,您需要检查请求的主机名,因为您只想阻止从example-client.com主机访问时以/admin开头的路径。换句话说,您需要检查Host HTTP请求头的值,该值在HTTP_HOST服务器变量中可用。
例如:

RewriteCond %{HTTP_HOST} ^(www\.)?example-client\.com [NC]
RewriteRule ^admin($|/) - [F]

这需要接近你的根.htaccess文件的顶部。
您不需要一个单独的条件(RewriteCond指令)来检查请求的URL路径,因为可以在RewriteRule指令中检查(更有效)。

相关问题