htaccess:多个子文件夹和网站访问权限

时间:2011-04-11 06:07:54

标签: .htaccess

我被困住了正确设置我的htaccess。目前我的htdocs文件夹中有以下情况和文件结构:

  • 的.htaccess
  • /网站
  • /客户端/布拉布拉
  • / somefolder

正如您可能猜到的,文件夹“website”包含导航到http://mydomain.com时应该可以访问的所有文件 - 这对当前的htaccess工作正常:

RewriteEngine on 

# remove www
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L]

# subfolder
RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$
RewriteCond %{REQUEST_URI} !^/website/
RewriteRule (.*) /website/$1

# clean urls
RewriteRule ^website/([a-z0-9\-]+)$ website/$1.php

我的问题:虽然我希望我的网站可以按现在的方式访问,但我也希望能够访问http://mydomain.com/clients/blalahttp://mydomain.com/somefolder等...使用我当前的htaccess,这会导致404错误说“在此服务器上找不到请求的URL /网站/客户端/ blabla。”

我需要添加/更改我的htaccess才能使其正常工作?

提前致谢

2 个答案:

答案 0 :(得分:4)

我认为你只需要添加几个条件来排除它们。

RewriteCond %{REQUEST_URI} !^/clients/
RewriteCond %{REQUEST_URI} !^/somefolder/

在子文件夹部分的重写规则前面加上这些内容。这将阻止它将/website/嵌入到URI中,如果它已包含/clients//somefolder/

答案 1 :(得分:4)

这应该有用。

RewriteEngine on 

# remove www
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L]

# subfolder
RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$
RewriteCond %{REQUEST_URI} !^/website/
RewriteCond %{REQUEST_URI} !^/somefolder/
RewriteCond %{REQUEST_URI} !^/client/blabla/
RewriteRule (.*) /website/$1

# clean urls
RewriteRule ^website/([a-z0-9\-]+)$ website/$1.php