我的链接就像“ http://www.shinylook.ro/product.php?id=58 ”,我像这样重写它们
"http://www.shinylook.ro/produs/58/saboti-dama/"
使用此代码:
RewriteRule ^produs/([0-9]+)/([a-zA-Z0-9_-]+)\/ product.php?id=$1 [L]
但我无法设法将旧链接重定向到新链接。如果有人将键入旧的,将被重定向到新的。
我试过这个:
RewriteRule ^product.php?id=$1 produs/([0-9]+)/([a-zA-Z0-9_-]+)\/ [L,R=301]
但它不起作用。
我该如何解决这个问题?
编辑:
我设法编写了 PHP 代码...您可以在www.shinylook.ro/redirect_old_links.php?id=44
.
但我无法解决 htaccess 重写代码以重定向到该文件...
我用了RewriteRule ^product.php?id=([0-9]+) redirect_old_links.php?id=$1 [R=301,NC]
但它不起作用。
编辑2:
我设法解决了这个问题...... htaccess 看起来像
RewriteCond %{ENV:REDIRECT_STATUS} !=200
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^product.php$ /redirect_old_links.php/ [L]
RewriteRule ^produs/([0-9]+)/([a-zA-Z0-9_-]+)\/$ product.php?id=$1 [L]
PHP 代码如下所示:
<?
include "_storescripts/connect_to_mysql.php";
error_reporting(E_ALL);
ini_set('display_errors', '1');
if (isset($_GET['id'])) {
$produs = $_GET['id'];
$sql = mysql_query("SELECT nume_produs FROM products WHERE id='$produs'"); // Chose the product
// ------- We check if it exists ---------
$existCount = mysql_num_rows($sql); // Count
if ($existCount == 1) {
while($row = mysql_fetch_array($sql)){
$nume_brut = $row["nume_produs"];
$nume = explode(" ", $nume_brut);
}
$nume_final = strtolower($nume[0]."-".$nume[1]);
$name = urlencode($nume_final);
header("location: http://www.shinylook.ro/produs/$produs/$name/", TRUE, 301);
}
else {
echo ("This product id does not exist!");
exit();
}
}
?>
如果有人看到一些错误(我是这个领域的新手),我会很高兴听到它们并学习如何更好地做这件事......