私のリンクは「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();
}
}
?>
誰かが間違いを見つけた場合 (私はこのドメインに不慣れです)、私はそれらを聞いて非常に嬉しく思い、これをより良く行う方法を学びます...