没有尾部斜杠的重定向Htaccess

时间:2018-04-26 00:43:51

标签: .htaccess url-redirection

我想将所有带有google引用的斜杠的网址重定向到没有尾部斜杠的新网址。

示例: http://example.com/toto/ ===>到http://example.com/toto

警告我已经重写规则以避免.html扩展名!

这是我现有的代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteCond %{REQUEST_URI} (.+)$
RewriteRule ^ %1 [R=301,L]
</IfModule>

我收到以下错误:

Not Found

The requested URL /example/.html was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

1 个答案:

答案 0 :(得分:0)

该主题的目标是找到一个解决方案,使搜索引擎列出的现有URL重定向,如谷歌在完成网站刷新(Wordpress to bootstrap)后不会失去当前的搜索引擎优化。

第一个目标是重定向所有网址流量,例如http://example.com/toto/(谷歌)===&gt;到http://example.com/toto

不幸的是,我明白反过来更强大,不会丢失我在谷歌上的现有列表(网站地图和机器人)

所以我决定检查所有代码,以便通过删除html扩展名并在每个网址的末尾添加一个尾部斜杠来获得以下结果:

http://example.com/toto.html ===&gt;到http://example.com/toto ==&gt; http://example.com/toto/

以下是我用来实现此目的的代码HTaccess:

RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.html to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1/ [R,L]

# add a trailing slash at the end  /dir/foo/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]

# delete the extension .html 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*?)/?$ $1.html [L,QSA]

我还在每个html页面中添加了下面的代码行来强制执行它:

<base href="http://example.com/">

希望在同样的情况下帮助任何读者/编码员