我有这个结构:
root
-web
-- .htaccess
-- index.html
-- robots.txt
-.htaccess
我的文档根目录是 root 目录。 /root/.htaccess的内容是:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine on
RewriteRule ^$ web/ [L]
RewriteRule (.*) web/$1 [L]
</IfModule>
现在,两个请求/robots.txt和/web/robots.txt都指向一个文件,即/ web /下有一个完整网站的副本。
如何在.htaccess文件中制作这样的规则,以便/web/robots.txt指向/web/web/robots.txt(并显示404)?我只需要让/robots.txt工作。
解决方案必须仅使用.htaccess。
(问题不在于robots.txt文件,它只是一个例子)
谢谢!
答案 0 :(得分:1)
像这样更改你的根.htaccess:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine on
# otherwise route /foobar to /web/foobar
RewriteRule ^((?!web/).*)$ web/$1 [L,NC]
</IfModule>
如果请求已经存在,则会避免添加web/
。
内部/web/.htaccess
将此规则作为第一条规则:
RewriteEngine On
# show 404 for direct requests to /web
RewriteCond %{THE_REQUEST} /web [NC]
RewriteRule ^ - [L,R=404]