由于htaccess文件无法访问子目录

时间:2014-07-26 16:53:55

标签: .htaccess

我在主目录中使用了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>

1 个答案:

答案 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}总是以斜线开头。我在答案中添加了斜杠。