Apache URL重写 - 从仅基本URL

时间:2017-08-03 16:40:39

标签: apache .htaccess mod-rewrite

我知道有很多"删除尾随斜线"通过Apache URL重写这里的问题,但我仍然没有找到一种方法(通过RewriteCond / RewriteRule或RedirectMatch)来做一个看似只是主机上根网址的简单的斜杠重定向: / p>

http://www.example.com/ - > http://www.example.com

我想要这样做的唯一原因是搜索引擎优化 - 我已经被告知,重定向到一个规范的家庭网址是谷歌搜索引擎的一种方式。

问题是$ {REQUEST_URI}总是包含斜杠(意味着上面的2个URL具有相同的$ {REQUEST_URI}值),而RewriteRule / RedirectMatch运行$ {REQUEST_URI}。 RewriteCond可以使用其他服务器变量,但我没有看到一个与主机和空请求匹配的整个URL。

由于我无法区分/和空,我无法在不导致无限重定向循环的情况下删除尾部斜杠。

# Causes infinite redirect loop
RewriteRule ^(.*)/$ $1 [R,L]

有关如何做到这一点的任何想法?这是非常简单的,我只是缺席了吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下规则执行此操作:

#If example.com is present, then remove /
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [R=301,L]

确保在测试之前清除缓存。