1

私は今、同じファイルから4つのURLを持っています:

これらのリンクはすべて機能します..

私のhtaccess:

RewriteEngine On
RewriteRule ^picture/([^/]*)$ /picture.php?name=$1 [L]

私のphpファイルの先頭に(スペースを-で置き換えるため)

$name  = str_replace('-', ' ', $_GET['name']);
$name  = mysql_escape_string($name);
$pic = mysql_query("SELECT * FROM pics WHERE name = '$name'") or die(mysql_error());

しかし、私はhttp://domain.com/picture/kim-kardashianのみを使用したいのですが、htaccess または php を使用して他のすべての URL をこの URL にリダイレクトするにはどうすればよいですか?

また、Google はこれらの URL をすべてインデックスに登録するのでしょうか、それともhttp://domain.com/picture/kim-kardashianのみをインデックスに登録するのでしょうか?

4

1 に答える 1

1

持っているルールの前に次のルールを追加します。

RewriteCond %{THE_REQUEST} ^(GET|POST)\ (.*)%20(.*)\ HTTP
RewriteRule . %2-%3 [R=301,NE]

RewriteCond %{THE_REQUEST} ^(GET|POST)\ /picture.php\?
RewriteCond %{QUERY_STRING} ^name=([^&]+)&?(.*)
RewriteRule . /picture/%1?%2 [R=301]

条件%{THE_REQUEST}が一致するため、書き換えられた URI (ルールが書き換えられるものなど) とは一致せず、実際に要求された URI と一致します。1 つ目は URI をスペースでリダイレクトしてダッシュ (一度に 1 つ) に置き換え、2 つ目はリクエストを探しprofile.phpて SEO に適したバージョンの URI にリダイレクトします。クライアントが 301 リダイレクトされると、ルールは内部的に picture.php に書き直されます。

Google が最初の 3 つの URI に対して持っているリンクは、301 リダイレクトのために最終的に 4 番目にマップされます。

于 2012-06-17T15:24:45.513 に答える