2013-03-14 136 views
1

谷歌拿起以下网址的查询部分和排名吧:htacess重定向 - 更改URL

http://www.example.com/yyy/zzz-99.php?item_id=99 & sort = 1item_id = 99部分不应该在那里)。

因为我拿起错误和固定它,我已经添加了下面一行到我的htaccess:

RedirectPermanent /yyy/zzz-99.php?item_id=99&sort=1 http://www.example.com/yyy/zzz-99.php?&sort=1 

然而重定向不起作用。任何线索我做错了什么?

+0

不幸的是,从手册页:_“mod_alias被设计为处理简单的URL操作任务。对于更复杂的任务,如**操作查询字符串**,请使用mod_rewrite提供的工具。”_ – Wrikken 2013-03-14 00:18:04

+0

谢谢! -1很苛刻,但我会接受它。当然,我做了尽可能多的研究,因为我可以提供我的知识。 – Tioneb 2013-03-14 00:34:16

+0

'-1'是不合适的恕我直言。它在文档中是很重要的,但很容易被忽视,大多数人只知道它,因为它们之前已经被烧毁了;)(很容易通过错误的大量表现出来,目前下面只有一个正确的答案)。 – Wrikken 2013-03-14 00:36:32

回答

3

我想你需要mod_rewrite的取得这样的单一替代,因为包含一个查询字符串。

你可以试试这个在根目录下的.htaccess文件,提供mod_rewrite的启用:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} ^/yyy/zzz-99\.php [NC] 
RewriteCond %{QUERY_STRING} item_id=99&sort=1 [NC] 
RewriteRule .*  /yyy/zzz-99.php?&sort=1? [NC,L,R=301] 

重定向

http://www.example.com/yyy/zzz-99.php?item_id=99&sort=1

http://www.example.com/yyy/zzz-99.php?&sort=1

对于沉默的映射,删除来自[NC,L,R = 301]的R = 301。

+0

谢谢faa。看起来不错,但它不起作用。我确实启用了mod_rewrite,所以这不是问题。 – Tioneb 2013-03-14 01:09:22

+0

我用你的代码编辑了我的问题。我相信它一定非常接近......这让我疯狂! – Tioneb 2013-03-14 01:18:49

+0

你的意思是把'?'放在RewriteRule的* end *上吗? @Tioneb:尝试没有第二个'?'。也许反斜杠 - 逃避RewriteCond指令中的其他标点符号? – 2013-03-14 02:23:46

-1

检查.htaccess文件的名称。确保它以一段时间开始。

redirect 301 /index.html http://www.domain.com/index.html 
redirect permanent /index.html http://www.domain.com/index.html 
redirectpermanent /index.html http://www.domain.com/index.html