1

私はそのようなURLを持っています

mysite.com/view.php?id=123

.htaccessを使用してURLを次のように変更しました

mysite.com/123/page-title.html

「page-title」の部分は元のURLの一部ではなく、ID「123」に対応するmysqlテーブルからの情報であるため、古いURLを新しいURLに301リダイレクトするにはどうすればよいですか。

確かにPHPが関係しているはずですが、.htaccessでそれを書く方法がわかりません...

4

2 に答える 2

3

「page-title」の部分は元の URL の一部ではなく、id「123」に対応する mysql テーブルからの情報であるため、古い URL を新しい URL に 301 リダイレクトするにはどうすればよいですか?

必要な唯一の書き換えルールは、見栄えの良い URL をview.phpにルーティングすることです。これは既に取得済みのように思えます。おそらく次のようになります。

RewriteCond %{REQUEST_FILENANE} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)/([^/]+)\.html /view.php?id=$1 [L]

そのリクエストが届いview.phpたら、変数を確認できます。$_SERVER['REQUEST_URI']それは のようになります'/123/page-title.html'。それを見ると、コンテンツを提供するだけで完了です。

ただし、 が のようにview.php見える場合は、見栄えの良い URL ではなく、誰かがそのページを要求したことがわかります。これが発生した場合、 はのサニタイズされた値を使用してデータベースからページ タイトルを検索し、リダイレクトを作成する必要があります (これはすべて、ブラウザに何かが出力される前に行う必要があります)。$_SERVER['REQUEST_URI']'/view.php?id=123'http://mysite.com/view.php?id=123view.php$_GET['id']

何かのようなもの:

    header('HTTP/1.1 301 Moved Permanently');
    header('Location: /' . $id . '/' . urlencode($page-title) . '.html');
    exit();

これにより、ブラウザがページにリダイレクトされますhttp://mysite.com/view.php?id=123。htaccess には他に何も必要ありません。

于 2012-10-23T03:17:27.987 に答える
0

このチュートリアルをチェックしてください。それはすべて非常に簡単に説明する必要があります。

于 2012-10-23T02:50:08.447 に答える