从旧的漂亮网址中删除字符,httpd / htaccess

时间:2015-01-21 15:25:22

标签: apache .htaccess mod-rewrite

我有一个旧博客,我最近更新过。旧的博客帖子有由searchengines索引的坏(旧)网址。我现在正在创建更好的,但由于这一点,我在Google网站管理员中获得了重复。

我用rewriteRule解决了大部分问题,但我遇到了问号,感叹号和点等特殊标志。

我已经尝试了其他线程中建议的几乎每个片段,但没有运气......

问题是这样的:

我有一篇旧帖子,其中包含网址:

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]

1 个答案:

答案 0 :(得分:1)

您可以尝试在RewriteEngine On

下面添加此项
RewriteRule ^(.*/)([^/]*)[^/A-Za-z0-9_-]+([^/]*\.html)$ /$1$2$3 [L,R=301]

清除所有不需要的字符。