【发布时间】:2015-01-22 03:10:42
【问题描述】:
我最近更新了一个旧博客。旧的博文有被搜索引擎索引的坏(旧)网址。我现在正在创建更好的,但因此在 Google 网站管理员中得到了重复。
我已经用 rewriteRule 解决了大部分问题,但我遇到了问号、感叹号和点等特殊符号。
我已经尝试了这里其他线程中建议的几乎所有 sn-p,但没有运气......
问题是这样的:
我有一篇带有 url 的旧博客文章:
http://example.com/blog/username/thank-god?-its-friday!!!._b-37483.html
我在博客上更新代码后,系统现在吐出:
http://example.com/blog/username/thank-god-its-friday_b-37483.html
以上两个链接都有效,我在 Google 中获得了重复的内容。
如何删除 '?'、'!'、'.'在httpd.conf(或htaccess)中以正确的方式?
以下是我在 httpd.conf 中涉及重写的代码
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^.*$ http://example.com%{REQUEST_URI} [R=301,L]
RewriteRule ^sitemap.xml$ sitemap.php [L]
RewriteRule ^(.*)ä(.*)$ /$1a$2 [L,R=301]
RewriteRule ^(.*)å(.*)$ /$1a$2 [L,R=301]
RewriteRule ^(.*)ö(.*)$ /$1o$2 [L,R=301]
RewriteRule ^(.*)Å(.*)$ /$1a$2 [L,R=301]
RewriteRule ^(.*)Ä(.*)$ /$1a$2 [L,R=301]
RewriteRule ^(.*)Ö(.*)$ /$1o$2 [L,R=301]
Rewriterule ^blog/(.+)/(.+).html$ ./blog/view/blog.php?page=$1&mode=$2 [NC]
Rewriterule ^blog/(.+).html$ ./blog/blog.php?page=$1 [NC]
Rewriterule ^blog/(.+)/$ ./blog/view/blog.php?page=$1 [NC]
Rewriterule ^blog/$ ./blog/blog.php [NC]
RewriteCond %{REQUEST_FILENAME} !-f
Rewriterule ^blog/(.+)/(.+)$ ./blog/view/blog.php?page=$1&mode=$2 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^blog/(.+)$ ./blog/blog.php?page=$1 [NC]
RewriteRule ^([A-Za-z0-9\-\+]+)$ ./artiklar.php?p=$1 [L]
【问题讨论】:
标签: apache .htaccess mod-rewrite