我想用mod_rewrite从http://www.server.com/directory/public重写到http://www.server.com/directory (其中目录然后指向目录/ public)
我尝试了几件事,但我无法弄清楚。 这是我的configuration:
<VirtualHost xxx.xxx.xxx.xxx:443> ServerAdmin [email protected] ServerName www.server.com DocumentRoot /var/www/server.com <Directory /var/www/server.com> RewriteEngine on RewriteCond %{REQUEST_URI} ^/directory RewriteRule ^(.*)$ /directory/public/ [L] </Directory> </VirtualHost>
尝试改变你的重写规则:
RewriteRule ^/directory(.*) /directory/public$1 [NC,L]
你不需要RewriteCond
在<Directory >上下文中,重写规则中的URI不以/开头。
对于.htaccess文件中的重写规则中的URI,这也是正确的,因为它们隐含在目录中。
文档的相关部分标题为“ 按目录重写 ”
要解决这个问题,你可以做一个:
<Directory >块。 <Directory >块。 如果是我的select,我会使用选项3。
从我阅读上面链接的文档页面,似乎build议您必须启用Options FollowSymLinks使RewriteRules在每个目录上下文中工作。 我从来没有testing过这个。 如果您在获取RewriteRules的时候遇到麻烦,请尝试添加Options +FollowSymLinks 。