我想将所有带有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.
答案 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/">
希望在同样的情况下帮助任何读者/编码员