0

私たちはブログを運営しており、htaccessを使用してURLを整理する必要がありますが、私は本当に困惑しています。

例:

サイトで作業していて、検索エンジンに適したURLを生成する必要があります

だから私は現在次のようなURLを持っています:

http://mywebsite.com/blog/read.php?art_id=11

このページのタイトルは次のとおりです。

なぜオーストラリア人は車にそんなにお金を払うのですか?

対応するSEFURLに変更する必要があります。そのようです:

http://mywebsite.com/blog/Why-do-Australians-pay-so-much-for-Cars-

疑問符はタイトルの一部であり、問​​題がある場合は削除できます。何か提案はありますか?

また、read.phpの部分を削除することをお勧めします。ブログ全体で機能するルールを作成する必要があります。

それらはすべて同じパターンに従いますが、art_id数が変わるだけです。

4

1 に答える 1

2

(WebサーバーとしてApacheを使用していると仮定します)

非常によく似た質問については、この回答をご覧ください:https ://stackoverflow.com/a/8030760/851273

ここでの問題は、.htaccessとmod_rewriteがページ名をart_idにマップする方法を知らないため、これを行うには2つの方法があります。

  1. にいくつかの機能を追加read.phpして、同様のルックアップを実行できるようにすることができますが、代わりに、または何かart_idを使用します。art_title基本的に、データベース(または記事が保存されている場所)のバックエンドルックアップを実行し、IDの代わりにタイトルをキーとして使用する必要があります。非ASCII文字や予約文字(?たとえば)などのタイトルに奇妙な文字が含まれる可能性があるため、これは少し厄介です。したがって、データベースからタイトルを引き出すとき、または使用するときに、タイトルエンコーダーとデコーダーを作成する必要があります。データベース内の記事を検索するためのタイトル。
  2. サーバー構成またはvhost構成にアクセスできる場合は、外部プログラムprgタイプ)を使用してRewriteMapをセットアップし、タイトルからIDへのルックアップを実行するphpスクリプトを作成できる場合があります。次に、次の行に沿って何かを実行する書き換えルールを.htaccessに作成できます。

    RewriteRule ^blog/(.*)$ /blog/read.php?art_id=${title-to-id:$1} [L]
    

    きれいなURLから記事のタイトルを抽出し、それをtitle-to-idという書き換えマップにフィードしてart_idを取得します。ここでも、タイトルエンコーダー/デコーダーを設定して、タイトルに非ascci文字と予約文字が処理されるようにする必要があります。

あなたができるもう一つのことは、あなたのきれいなURLに記事IDを貼り付けて、それらが次のようになるようにすることです:http: //mywebsite.com/blog/11-Why-do-Australians-pay-so-much-for-Cars。これは、リンクが何であるかを確認するのはまだかなり簡単で、SEOに対応しており、タイトルからIDへのルックアップを行う必要がありません。書き換えルールも同様に簡単になります。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# add whatever other special conditions you need here

RewriteRule ^blog/([0-9]+)-(.*)$ /blog/read.php?art_id=$1 [L]

以上です。もちろん、すべてのブログURLを次の形式で生成する必要がhttp://(host)/blog/(art_id)-(art_title)あります。また、タイトルから特殊文字を削除する必要がありますが、翻訳するための追加のコードを書くことを心配する必要はありません。タイトルをIDに戻します。

于 2012-07-13T21:56:23.723 に答える