Php htaccess限制对子域的url访问

Php htaccess限制对子域的url访问,php,apache,.htaccess,mod-rewrite,cpanel,Php,Apache,.htaccess,Mod Rewrite,Cpanel,所以基本上我有以下的公共html结构: /main /subdomains 到目前为止,我已设法通过设置以下内容使其无法直接访问/子域: www.site.com/subdomains 但是,假设我有一个子域,名为projects: projects.site.com 在文件夹中: /子域/项目/ 现在,如果知道url,可以通过以下方式访问项目文件夹: site.com/subdomains/projects. 我想做的是防止这种行为,因此访问子域的唯一方法是通过正确的子域url:projec

所以基本上我有以下的公共html结构:

/main
/subdomains
到目前为止,我已设法通过设置以下内容使其无法直接访问/子域:

www.site.com/subdomains

但是,假设我有一个子域,名为projects:

projects.site.com

在文件夹中:

/子域/项目/

现在,如果知道url,可以通过以下方式访问项目文件夹:

site.com/subdomains/projects.

我想做的是防止这种行为,因此访问子域的唯一方法是通过正确的子域url:projects.site.com.


如果这可以通过Cpanel完成,那就太好了,但我并不羞于使用.htaccess来完成。请记住,在写你的答案时,我还不是非常流利,但请记住我的答案非常详细。

请将此规则放在你的
文档root/.htaccess

RewriteEngine On

RewriteCond %{HTTP_HOST}:%{REQUEST_URI} ^([^.]+)\.[^:]+:/subdomains/\1/
RewriteRule ^ - [F]
  • RewriteCond
    这里是两个变量组合的动作
    %{HTTP\u HOST}
    %{REQUEST\u URI}
  • 用作两个变量之间的分隔符
  • ([^.]+)
    正在组1中捕获子域名(例如项目)
  • /subdomains/\1/
    将请求URI与反向引用1匹配
  • 如果条件为true,则返回禁止的错误

作为快速答案,您可以重命名存储Web文件的文件夹。您的示例是项目:

假设您的文件存储在/var/www/projects.files中

只需使用servername projects.yourdomain.com创建一个VHost

相反,无法使用yourdomain.com/projects调用该站点