我已经完美地运行了VirtualDocumentRoot,但我想阻止通过VirtualHost指令访问每个文档根目录中的特定文件夹,因此我不需要在每个文档根目录中都有.htaccess文件文档根,但我似乎无法阻止工作。 (虚拟主机工作正常,但我可以通过浏览器直接访问wp-includes,但我不能)。
以下是我所拥有的:
<VirtualHost 127.0.0.1:80>
UseCanonicalName Off
ServerName default
ServerAlias *
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^/(.*)$ "/Users/me/My Sites/%2/wordpress/$1"
VirtualDocumentRoot "/Users/me/My Sites/%0/wordpress"
<Directory "/Users/me/My Sites/*/wordpress">
RewriteEngine On
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
Options -Indexes +FollowSymLinks +Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
浏览domain.com/wp-includes应该提供一个禁止的页面,但是我创建了目录并在其中放了一个index.php,我可以直接浏览它并查看输出。
如果我将Rewrite(来自目录)放入wordpress目录中的.htaccess文件,它可以正常工作。但是一旦我把它放到目录中...... bupkis。
我出错的任何想法?
答案 0 :(得分:0)
在.htaccess中,RewriteRule的^部分说,&#34;从RewriteBase处理这个&#34;在每个目录的基础上,但它不在目录规则中工作。因此,您当前的规则将相对于服务器上的/
目录进行处理。
出于在WordPress中的目的,请在每个插入之前删除插入符号。这将处理与该规则不匹配的任何目录/文件的RewriteRules,因为WordPress核心应该是创建和使用wp-admin和wp-includes作为目录的唯一一个,并且您总是希望这些被阻止。< / p>