我被困住了正确设置我的htaccess。目前我的htdocs文件夹中有以下情况和文件结构:
正如您可能猜到的,文件夹“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/blala和http://mydomain.com/somefolder等...使用我当前的htaccess,这会导致404错误说“在此服务器上找不到请求的URL /网站/客户端/ blabla。”
我需要添加/更改我的htaccess才能使其正常工作?
提前致谢
答案 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