子域的RewriteRule

时间:2011-08-04 19:41:50

标签: apache .htaccess dns subdomain wildcard

我的.htaccess中的rewriterule有问题 首先,我的网站上有一张wlidcard(* .site.com)

以下是我网站的路径:

/home/www/static/
/home/www/home/
/home/www/.htaccess

所以我在我的网站的根目录下创建了一个.htaccess:

RewriteCond %{HTTP_HOST} static.site.com [NC]
RewriteRule !^static/ static%{REQUEST_URI}

RewriteCond %{HTTP_HOST} www.site.com [NC]
RewriteRule !^home/ home%{REQUEST_URI}

这些重定向运行得非常好,但是当我想要举例时:

http://www.site.com/img

有一个问题,它正在重定向我http://www.site.com/home/img/

但是当我用最后的反斜杠键入http://www.site.com/img/时,一切都还可以。

感谢您的回复:)

3 个答案:

答案 0 :(得分:2)

尝试:

RewriteRule ^(.*)$ $1/ [R=301,L]

如果缺少斜线,这应该为你添加缺失斜杠。你想要包含'L'标志来告诉重写引擎这是你的最后重写,而不是在这个重叠之上应用其他规则。

答案 1 :(得分:1)

请勿匹配映射到现有目录的请求

RewriteCond %{REQUEST_FILENAME} !-d

如果这不起作用,请尝试匹配请求加上另一个斜杠是否为目录?

RewriteCond %{REQUEST_FILENAME}/ !-d

答案 2 :(得分:0)

解决了:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,6}|/|#(.*))$
RewriteRule ^(.*)$ $1/ [R=301,L]