如何使用mod_rewrite删除TLD后的尾随点?

时间:2015-08-12 18:38:29

标签: .htaccess mod-rewrite apache2

有一些网站,例如:

http://example.org

在顶级域名之后,我想禁止放置点:

http://example.org.

我的.htaccess(相关部分):

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /

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

...

</IfModule>

这适用于此类请求,例如:

http://example.org/news./ -> http://example.org/news/
http://example.org/solutions./ -> http://example.org/solutions/

但如果我把点放在第一级域之后,这个点仍然是:

http://example.org./ -> http://example.org.
http://example.org. -> http://example.org.

如何使用mod_rewrite删除TLD之后的尾随点?

我将非常感谢这些信息。谢谢大家。

1 个答案:

答案 0 :(得分:1)

您可以在RewriteBase行下方插入此规则,以删除域名中的尾随点:

RewriteCond %{HTTP_HOST} ^(.+?)\.$
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=302,NE]

我发现,域名中的Web服务器允许使用尾随DOT。即使https://www.google.com./https://www.google.com/的工作方式相同。