【问题标题】:How do I remove a trailing slash of subdomain URL in htaccess?如何在 htaccess 中删除子域 URL 的尾部斜杠?
【发布时间】:2014-05-26 03:09:54
【问题描述】:

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

【问题讨论】:

  • 这个文件里还有更多规则还是只有这个?
  • 添加了完整的 htaccess 内容来发布
  • 如果它在父域的 DocumentRoot 中,它不会为子域执行(除非子域设置不正确)。你能显示子域的VirtualHost条目吗?
  • 我不相信我可以访问该站点-该站点位于共享服务器上。但是,根据您的回答,我将规则放在子目录的 htaccess 文件中,现在它可以按预期工作。谢谢!

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 2015-05-09
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多