Regex 从文件夹创建子域,但拒绝文件夹访问

Regex 从文件夹创建子域,但拒绝文件夹访问,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,好的,我已经花了将近4个小时搜索该网站的解决方案,另外2个小时搜索谷歌,当大多数网站复制粘贴数据时,这不是很有用。所以我决定在这里寻求一些帮助 我成功地创建了一个子域,比如说http://admin.myhost.com,它基本上从文件夹admin中获取数据。问题是当我把http://myhost.com/admin脚本仍然可以访问。假设我想使这个文件夹不可访问,当通过url执行某个文件时,抛出一个指向自定义文件的重定向,例如index.php?template=error404http://m

好的,我已经花了将近4个小时搜索该网站的解决方案,另外2个小时搜索谷歌,当大多数网站复制粘贴数据时,这不是很有用。所以我决定在这里寻求一些帮助

我成功地创建了一个子域,比如说
http://admin.myhost.com
,它基本上从文件夹
admin
中获取数据。问题是当我把
http://myhost.com/admin
脚本仍然可以访问。假设我想使这个文件夹不可访问,当通过url执行某个文件时,抛出一个指向自定义文件的重定向,例如
index.php?template=error404
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]
Options+FollowSymlinks
选项-索引
命令拒绝,允许
全盘否定
重新启动发动机
重写基/
重写规则^sitemap.xml$index.php?map=google\u站点地图[L]
重写规则^googlebase.xml$index.php?map=google\u base[L]
重写规则^download(.*)/index.php?模板=error404[L]
重写规则^admin(.*)/index.php?模板=error404[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写条件%{REQUEST\u URI}!。*\。(ico | gif | jpg | jpeg | png | js | css)
RewriteRule^([^?]*)index.php?seo_url=$1[L,QSA]
实际上,只有当我删除admin文件夹中的空
.htaccess
(它只显示RewriteEngine on)时,它才起作用,但当我这样做时,网站
http://admin.myhost.com
抛出http错误500,并且该错误不再可访问。如果我在管理员文件夹中再次添加
.htaccess
,说明“重写引擎开启”规则,则子域将再次开始工作,但同样,可以通过URL adding
/admin
访问该文件夹


几个小时后,我似乎找不到解决这个问题的办法。有没有办法做到这一点?我做错什么了吗?

/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]

您是否尝试过在(admin)文件夹中创建index.php文件。并且只写一行标题(“位置:任何页面url”);所以它会重定向它。当有人访问管理员文件夹时…谢天谢地,我实际上编辑了最后一行以重定向到自定义404错误,它实际上获取远程地址并添加数据库所有错误、请求的uri、时间、url、浏览器和其他数据,这就是为什么我需要重定向而不是保护。谢谢!不客气,很高兴它成功了,只要允许,你就可以将答案标记为已接受。是的,我一直在等待被允许标记它,再次非常感谢,现在我的头痛正在慢慢消失……谢谢,我也对你的问题投了赞成票。这个问题写得很好,有很多细节。