如何在htaccess中删除子域URL的尾部斜杠?

时间:2014-05-26 03:09:55

标签: apache .htaccess mod-rewrite subdomain trailing-slash

目前,当请求的URL不是目录时,我的.htaccess被设置为删除任何尾部斜杠。问题是,这导致test.domain.com/order.php/被重定向到test.domain.com/test/order.php而不是test.domain.com/order.php。当它不在子域中时,它可以很好地工作。

这是我用来删除尾部斜杠的.htaccess代码:

    #if it's not a directory
    RewriteCond %{REQUEST_FILENAME} !-d
    #and it has a trailing slash, then redirect to URL without slash
    RewriteRule ^(.+)/$ /$1 [L,R=301]

不知何故,除了已存在的子域之外,子域所服务的子目录正被添加到URL中。如何在不添加/ test的情况下删除尾部斜杠?

编辑:

这是完整的.htaccess:

    RewriteEngine On

    Options +SymLinksIfOwnerMatch
    Options -Indexes
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)/$ /$1 [L,R=301]

1 个答案:

答案 0 :(得分:0)

在我的问题下看到anubhava的评论后,我决定将删除尾部斜杠规则放在子域的子目录中的.htaccess文件中。我还阻止文档根.htaccess中的规则影响子目录(因为它有自己的规则):

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{HTTP_HOST} !^test\. [NC]
    RewriteRule ^(.+)/$ /$1 [L,R=301]

它现在可用于主站点以及子域。