我有一个Apache服务器,主要的rootwebdir是'/ usr / www / users / foo /'和'foo.com'指向那里。但是,我有一些指向其目录的子域名:
subdomain1.foo.com ---> /usr/www/users/foo/subdomain1
subdomain2.foo.com ---> /usr/www/users/foo/subdomain2
这给我带来了一个问题:如果有人输入'www.foo.com/subdomain1/aboutme.html',他们会找到带有其他网址的'subdomain1.foo.com/aboutme.html',我想避免它
我想知道是否有办法避免这种情况(例如,显示404页面),使用'/usr/www/users/foo/subdomain1'的'.htaccess'文件中的指令。
欢迎任何其他解决方案。非常感谢你。
答案 0 :(得分:1)
您可以将请求重写为特定子域和自定义错误文档的特定路径的组合。这应该是最简单的:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^subdomain1\.foo\.com$ [NC]
RewriteRule ^subdomain1 http://foo.com/not-found.html [L]
这可以在.htaccess
样式文件或真实的http服务器主机配置中完成。应尽可能优先考虑第二种选择。 .htaccess
样式文件非常容易出错,难以调试,真的会降低服务器的速度,通常一无所获。它们仅适用于不可以访问实际配置的情况(读取:"廉价主机提供商")或应用程序需要自己编写这些文件的情况(当然是一场安全噩梦...)。
由于主机是隐式设置的,因此http服务器主机配置的版本会略短且更优雅:
RewriteEngine on
RewriteRule ^/subdomain1 http://foo.com/not-found.html [L]
答案 1 :(得分:1)
您可以在任何子域名目录subdomain1/.htaccess
中使用此规则来阻止使用主域foo.com
进行访问:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?foo\.com$ [NC]
RewriteRule ^ - [F]