如何使用 mod_rewrite 删除 TLD 后的尾随点?
How to remove the trailing dot after TLD by using mod_rewrite?
有一些网站,比如:
http://example.org
我要禁止在顶级域名后加点:
http://example.org.
我的.htaccess(相关部分):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\./?$ / [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.
如果能提供信息,我将不胜感激。感谢大家。
您可以在 RewriteBase
行下方插入此规则以删除域名中的尾随点:
RewriteCond %{HTTP_HOST} ^(.+?)\.$
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=302,NE]
我发现域名中的 Web 服务器允许尾随 DOT。甚至 https://www.google.com./
和 https://www.google.com/
的工作方式也相似。
有一些网站,比如:
http://example.org
我要禁止在顶级域名后加点:
http://example.org.
我的.htaccess(相关部分):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\./?$ / [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.
如果能提供信息,我将不胜感激。感谢大家。
您可以在 RewriteBase
行下方插入此规则以删除域名中的尾随点:
RewriteCond %{HTTP_HOST} ^(.+?)\.$
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=302,NE]
我发现域名中的 Web 服务器允许尾随 DOT。甚至 https://www.google.com./
和 https://www.google.com/
的工作方式也相似。