使用同一个网站空间托管两个域时,如何阻止访问域子文件夹?

时间:2010-04-28 16:04:58

标签: php .htaccess mod-rewrite

我有两个域指向我的网站空间的同一根文件夹。我的根目录设置如下:

  • / domain1的
  • / DOMAIN2
  • /共享

请求......

当前.htaccess:

# Redirect domain1.com paths to domain1 folder.
RewriteCond %{HTTP_HOST} ^www\.domain1\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/domain1/
RewriteRule ^(.*)$ /domain1/$1

# Redirect controllers to index.php.
RewriteCond %{HTTP_HOST} ^www\.domain1\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^domain1/(.*)$ /domain1/index.php?controller=$1 [QSA,L]

# Redirect domain2.com paths to domain2 folder.
RewriteCond %{HTTP_HOST} ^www\.domain2\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/domain2/
RewriteRule ^(.*)$ /domain2/$1

# Redirect controllers to index.php.
RewriteCond %{HTTP_HOST} ^www\.domain2\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^domain2/(.*)$ /domain2/index.php?controller=$1 [QSA,L]

剩下要做的是:

  1. 如果是用户,请不要提供来自http://www.domain1.com/domain1的网页 手动输入。
  2. 如果用户手动输入此页面,请不要提供来自http://www.domain1.com/domain2的网页(我已经实现了这一点但为了简洁而省略了它)。
  3. 注意:我宁愿不使用符号链接,因为我在Windows上运行xampp进行本地开发。

    我的问题是:

    如果用户输入了内容,我如何在内部从http://www.domain1.com重定向到http://www.domain1.com/domain1但不能提供http://www.domain1.com/domain1

1 个答案:

答案 0 :(得分:1)

您需要测试request line以查看最初请求的URI:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(domain1|domain2)[/?\ ]
RewriteRule ^(domain1|domain2)($|/) -

在这种情况下,您可以发送状态代码404([R=404]标志,因为Apache 2)或将请求重写到处理此类请求的某个点。