.htaccess子域到目录:尾部斜杠的问题

时间:2011-06-28 20:19:02

标签: .htaccess mod-rewrite

我的htaccess文件出了问题。该文件的最后一部分应该重定向 filip.novotny.je/subdom/filip/。 当URL以斜杠结尾时,一切都很好但是当它没有时,它会在地址栏中显示丑陋的子域目录。有谁知道为什么会这样?

请在此处自行尝试:with x without尾随斜杠

RewriteEngine On

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

RewriteCond %{HTTP_HOST} ^www.filip.novotny.je$ [NC]
RewriteRule ^(.*)$ http://filip.novotny.je/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^novotny.je$ [nc]
RewriteRule ^(.*)$ http://filip.novotny.je/$1 [r=301]

# cele domeny (aliasy)
# RewriteCond %{REQUEST_URI} !^/domains/
# RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
# RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
# RewriteRule (.*) /domains/%2/$1 [L]

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) /subdom/%2/$1 [L]

2 个答案:

答案 0 :(得分:1)

我最近有一个非常类似的问题,但在IIS7中。这是我的解决方案,转换为.htaccess语法。我希望它适合你。

RewriteCond %{REQUEST_FILENAME}  -d
RewriteRule ^(.+[^/])$  $1/  [R]

基本上,条件是请求是一个目录,重写匹配所有没有尾部斜杠的请求,并以尾部斜杠输出。

答案 1 :(得分:0)

只需添加重写规则即可在每个网址后添加斜杠。像

这样的东西
RewriteCond %{REQUEST_URI}  ^([^+?&]+[^/])$
RewriteRule ^([^+?]+[^/])$ $1/  [R,L]

在您提供的所有规则之前添加此内容。这会将所有网址从a.com/b转换为a.com/b/