0

目前,当请求不是目录的 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]
4

1 回答 1

0

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

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

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

于 2014-05-26T05:39:40.597 回答