这是我目前的htaccess。
网站 |的.htaccess | - /文件夹1 | - /文件夹-2
现在我的root htaccess如下:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^site.com$
RewriteRule ^/?$ /public/ [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*) /public/$1 [L]
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
我希望用户访问文件夹1和文件夹2中的所有文件和文件夹。如何做到这一点?
答案 0 :(得分:0)
一些变化:首先重定向您的域名(注意细微的变化);
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule .* http://%1/$0 [R=301,L]
RewriteCond %{HTTP_HOST} ^site\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!(?:folder-1|folder-2)(?:$|/)|public/(?:index\.php)?$).* public/$0 [L]
这将您从重写中排除的文件夹合并到主规则中,因此应该更有效率。它看起来很难看,因为它以负前瞻断言(?!
开始,其余组以(?:
开头,因此它们不会被捕获。
你真的需要一个域名吗?如果是这样,应检查所有请求。如果没有,请删除第二个RewriteCond
的第一个RewriteRule
。
如果您的默认文档不是index.php
,请在第二个RewriteRule
的否定前瞻声明中更改它。