2009-12-30 153 views
0

我有一個在線商店,例如,位置爲:hxxp://domain.com/store/重定向301現代重寫問題

內存儲目錄的.htaccess文件我有這樣的:

Options +FollowSymlinks 
RewriteEngine on 
RewriteBase /store/ 
RewriteCond %{HTTP_HOST} !^www.domain.com$ 
RewriteRule ^(.*)$ http://www.domain.com/store/$1 [R=301] 
RewriteRule ^/?$ directory.php 
RewriteRule ^search/?$ search.php 
RewriteRule ^category/([a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\?\_\-\ ]+)/?$ product.php?CategoryID=$1 [QSA] 
RewriteRule ^([a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\?\_\-\ ]+)/?$ product/detail.php?ProductID=$1 [QSA] 

它很好用!

我的問題(問題)是我現在需要將/ store /目錄更改爲/ shop /,這似乎很簡單。不過,我需要設置適當的301重定向,以便我不會丟失任何我可能擁有的SE排名。

在這種情況下設置301重定向的最佳方法是什麼?

我發現的唯一解決方案是爲商店中的每個類別,產品等設置重定向301。例如,像這樣。

Redirect 301 /store/category/sample-widgets/ hxxp://www.domain.com/shop/category/sample-widgets/ 

這工作和做什麼,我需要它,但是...的URL地址欄中顯示像這樣:hxxp://www.domain.com/shop/category/sample-widgets/? CategoryID = sample-widgets

我找不出爲什麼或如何刪除查詢字符串。

請幫忙。謝謝。

回答

0

您可以通過使用PHP腳本來處理重定向來處理301錯誤。

在你的.htaccess文件中,可以添加此規則:

Redirect 301 /error301.php

創建文件error301.php:

<?php 

$redirects = array('/path/to/old/page/' => '/path/to/new/page/', 
        '/store/category/sample-widgets/' => '/shop/category/sample-widgets/'); 

if (array_key_exists($_SERVER['REQUEST_URI'], $redirects)) 
{ 
    $dest = 'http://'.$_SERVER['HTTP_HOST'].$redirects[$_SERVER['REQUEST_URI']]; 
    header("Location: {$dest}", TRUE, 301); // 301 Moved Permanently 
} 
0

你可以使用一個簡單的Redirect指令,如:

Redirect 301 /store/ /shop/ 

或者,如果你想使用mod_重寫以及,您需要更改當前的規則,因爲您無法再使用基本URL /store/了:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !=www.example.com 
RewriteRule^http://www.example.com%{REQUEST_URI} [L,R=301] 
RewriteRule ^store/?([^/].*)?$ /shop/$1 [L,R=301] 
RewriteRule ^shop/?$ directory.php 
RewriteRule ^shop/search/?$ shop/search.php 
RewriteRule ^shop/category/([[email protected]#$%^&*()?_\-\ ]+)/?$ product.php?CategoryID=$1 [QSA] 
RewriteRule ^shop/([[email protected]#$%^&*()?_\-\ ]+)/?$ product/detail.php?ProductID=$1 [QSA]