htaccess中的重复URL和解决方案

时间:2013-07-24 08:40:55

标签: .htaccess mod-rewrite url-rewriting

多年后我发现我尝试修复的重复网址中存在一个错误(作者已经不见了),尽管htaccess规则我认为应该强制它。

问题: 我在2 URLS下有相同的内容,例如:

http://www.wrock.pl/news-23069/Depeche_Mode_Party_w_klubie_Liverpool_/

www.wrock.pl/index.php?s=news&d=23069&nazwa=Depeche_Mode_Party_w_klubie_Liverpool_

或更短www.wrock.pl/index.php?s=news&d=23069

另一个例子是菜单页面:

http://www.wrock.pl/koncerty/

www.wrock.pl/index.php?s=koncerty

我认为“index.php”版本应隐藏或重定向到友好的URL版本,同时两者都显示为200 / OK Index.php本身被重定向OK:www.wrock.pl/index.php

目的: 能够只显示友好的URl版本(重定向index.php版本)。 谷歌停止对它们编制索引,因此可能是一个问题(原因之一)。

这是我负责提供示例的htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^wrock.pl(.*) [NC]
RewriteRule ^(.*)$ http://www.wrock.pl/$1 [R=301,L]

# REDIRECT index.php to /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/
RewriteRule ^(([^/]+/)*)index\.php$ http://www.wrock.pl/$1 [R=301,L]

#NEWS
RewriteRule ^news-([0-9]+)/([^-]+)/$ index.php?s=news&d=$1&nazwa=$2 [L,NC]
RewriteRule ^news/([0-9]+)/$ index.php?s=news&strona=$1 [L,NC]

#KONCERTY
RewriteRule ^koncerty/$ index.php?s=koncerty [L,NC]

我不知道当前的重定向是否应该更改,或者我应该输入类似的内容:

#RewriteRule ^index.php?s=news&d=([0-9]+)&nazwa=([^-]+)$ http://www.wrock.pl/news-$1/$2/ [L,NC]

当然不起作用。

非常感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

#NEWS 项目之上,您需要添加以下规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?s=news&d=([0-9]+)&nazwa=([^-&\ ]+)($|\ )
RewriteRule ^ /news-%1/%2/ [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?s=news&strona=([0-9]+)($|\ )
RewriteRule ^ /news/%1/ [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?s=koncerty
RewriteRule ^ /koncerty/ [L,R=301]

为了处理“更短www.wrock.pl/index.php?s=news&d=23069

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?s=news&d=([0-9]+)($|\ )
RewriteRule ^ /news-%1/ [L,R=301]

RewriteRule ^news-([0-9]+)/$ index.php?s=news&d=$1 [L]