【问题标题】:.htaccess rewrite rule for anything except specific http_host.htaccess 重写规则,用于除特定 http_host 之外的任何内容
【发布时间】:2013-12-11 14:02:52
【问题描述】:

问题背景:

我通过 cPanel 使用共享主机,在我当前的主机设置中,我无法创建额外的虚拟主机。目前为了降低成本,我试图避免更复杂,所以我有几个站点符号链接到 public_html

 public_html /
 |
 |---> siteone.net /
 |
 |---> sitetwo.com /
 |
 |---> sitethree.net.au /
 |
 |--  (etc)

.

问题:

'sitetwo.com' 可从 siteone.net 以http://siteone.net/sitetwo.com/ 访问

.

目标解决方案:

我的目标是阻止其他站点访问站点文件夹。我只是模拟虚拟主机,显然不理想,但我需要再做几个月。

注意:目前使用 htaccess 代码路由域如下:

 RewriteCond %{HTTP_HOST} ^(www.)?siteone.net$
 RewriteCond %{REQUEST_URI} !^/siteone/
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ /siteone/$1
 RewriteCond %{HTTP_HOST} ^(www.)?siteone.net$
 RewriteRule ^(/)?$ siteone/index.php [L]

.

尝试的解决方案:

我的目标是将未通过 siteone.com 路由的任何内容重定向到 404:

 RewriteCond %{HTTP_HOST} !^(www.)?siteone.net$
 RewriteCond %{REQUEST_URI} ^/siteone.net/
 RewriteRule -- serve 404 page ----- [L]

这不起作用。 mod_rewrite 手册和谷歌似乎不认为在重写条件下对 HTTP_HOST 可用 NOT 逻辑......否则我没有正确阅读。

我们将不胜感激。

【问题讨论】:

  • /siteone.net/ 文件夹中是否也有 .htaccess? `
  • 可能……不总是
  • 没有收到您的评论,您的意思是什么?
  • 您问我是否在 /siteone.net/ 中有一个 .htaccess 文件(不是真名)。所以是的 - 'siteone' 有一个 .htaccess 文件,但 sitetwo 可能没有。取决于我。据我所知,没有任何具体原因会迫使我朝任何一个方向发展……除非你有一个。
  • 好的,请查看下面的答案。

标签: regex apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

好的,将此代码添加为/siteone.net/.htaccess中的第一条规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^(www\.)?siteone\.net$ [NC]
RewriteRule ^ - [F]

如果 sitetwo.com 不存在 .htaccess,则可以选择使用:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^(www.)?sitetwo\.com$ [NC]
RewriteRule ^sitetwo\.com/ - [NC,F]

【讨论】:

  • 谢谢!我很快就会试试这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 2013-08-03
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多