我在主目录中使用了htaccess文件。它来自我正在使用的cms。问题是因为它我无法访问子目录。我需要更改哪些内容才能访问domain.com/cms?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*) http://%1/$1 [R=301,L]
RewriteEngine On
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
答案 0 :(得分:0)
第一条规则是无关的。第二条规则将导致所有不以公开方式开头的网址以公开为前缀。 example.com/cms/cookies
将在内部成为example.com/public/cms/cookies
。你想要的是从规则中排除它。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*) http://%1/$1 [R=301,L]
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(public|cms)
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
您可以使用您不希望规则匹配的任何其他子目录展开它。我很惊讶你没有得到内部服务器错误,因为据我所知,%{REQUEST_URI}
总是以斜线开头。我在答案中添加了斜杠。