2013-03-14 135 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