好吧,我花了近4个小时在网站上搜索解决方案,另外2个小时搜索谷歌,当大多数网站复制粘贴数据时,这并不是很有用。所以在这里我决定寻求一些帮助。
我成功创建了一个子域名,让我们说http://admin.myhost.com
,它基本上从文件夹admin
获取数据。问题是,当我放置http://myhost.com/admin
时,脚本仍然可以访问。假设我想让这个文件夹无法访问,重定向到自定义文件,例如index.php?template=error404
当某个文件通过url http://myhost.com/admin
执行时。我已将此行添加到.htaccess
RewriteRule ^admin(.*) /index.php?template=error404 [L]
它就像这样结束了。
Options +FollowSymlinks
Options -Indexes
<FilesMatch "\.(tpl|ini|log)">
Order deny,allow
Deny from all
</FilesMatch>
RewriteEngine On
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?map=google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?map=google_base [L]
RewriteRule ^download(.*) /index.php?template=error404 [L]
RewriteRule ^admin(.*) /index.php?template=error404 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?seo_url=$1 [L,QSA]
它实际上只有在我删除admin文件夹中的空.htaccess
时才会起作用(它只显示RewriteEngine),但是当我这样做时,网站http://admin.myhost.com
会抛出一个http错误500,并且它不再可访问。如果我再次添加管理文件夹中的.htaccess
,表明RewriteEngine on rule,则子域再次开始工作,但同样,该文件夹可通过URL添加/admin
几个小时后我似乎无法找到解决这个问题的方法。有没有办法做到这一点?我做错了吗?
答案 0 :(得分:6)
/admin/.htaccess
有这条规则:
RewriteEngine On
# block access if HOSTNAME is not starting with admin.
RewriteCond %{HTTP_HOST} !^admin\. [NC]
RewriteRule ^ - [F]
或者如果你想显示/index.php?template=error404那么
RewriteCond %{HTTP_HOST} !^admin\. [NC]
RewriteRule ^ /index.php?template=error404 [L,QSA]