如何重定向到没有斜线?

时间:2016-03-10 10:43:56

标签: redirect

我想重定向页面博客

www.example.com/blog/ to www.example.com/blog
www.example.com/es/blog/ to www.example.com/es/blog
www.example.com/en/blog/ to www.example.com/en/blog

我有这个,但不起作用

RewriteCond %{HTTP_HOST} ^example\.com/blog/$
RewriteRule (.*) http://www.example.com/blog/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^example\.com/en/blog/$
RewriteRule (.*) http://www.example.com/en/blog [R=301,L]

RewriteCond %{HTTP_HOST} ^example\.com/es/blog/$
RewriteRule (.*) http://www.example.com/es/blog [R=301,L]

1 个答案:

答案 0 :(得分:0)

由于无效模式,您的RewriteConditions失败:

RewriteCond %{HTTP_HOST} ^example\.com/blog/$

上述条件表示如果主机值为 example.com/blog / ,则此条件返回false,因为http_Host仅表示域名,部分名称是Request_uri的一部分,它可以不能使用http_host变量进行操作。

你可以这样做:

RewriteEngine on


RewriteCond %{HTTP_HOST} ^example\.com$
RewriteCond %{REQUEST_URI} ^/blog/$
RewriteRule ^(.*)/?$ /blog [NC,L,R]

上面的示例重定向:

  • example.com/blog /

  • example.com/blog

如果要删除除现有目录之外的所有请求的尾部斜杠,可以使用以下内容:

RewriteEngine on


#if trailing slash  
RewriteCond %{REQUEST_URI} /$
 #redirect the request to remove the trailing slash
RewriteRule ^(.+)/?$ /$1 [L,R]