2

example.com/posts.php?id=2のようなidパラメーターを受け取る動的ページがある場合、URLがIDではなく投稿のタイトルを表示するようにhtaccessでRewriteRuleを作成するにはどうすればよいですか?たとえば、posts.php?id = 2は、「PHP is cool」というタイトルの投稿を示しています。URLをexample.com/2/php-is-coolのように書き直したいですか?タイトル値がMySQLデータベースに保存されている場合、それは可能でしょうか?

追加情報:

これは私のhtaccessがどのように見えるかです:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain\.com$
RewriteRule (.*) http://www.mydomain.com/$1 [R=301,L]

ErrorDocument 404 /index.php
ErrorDocument 403 /index.php
php_value post_max_size 20M

基本的に、私はブログの投稿を投稿と呼ばれるテーブルに格納するMySQLデータベースを持っています。投稿テーブルには、id属性(自動インクリメントの主キー)、title属性、およびcontent属性があります。mydomain.com/posts.php?id=Xにアクセスすると、WebページのデータベースからIDが「X」の投稿が表示されます。ページのタイトルが表示されるようにURLを書き直せるようにしたいだけです。私はこれを主に美学ではなくSEOのために行っています。これはhtaccessを使用して可能ですか、それとも別の方法でアプローチする必要がありますか?

4

2 に答える 2

2

書き換えルールは、バックエンド(apache)でのURLの処理方法に適用されます。mod_rewriteを使用してこれらのURLを書き換えても、ユーザーを新しいURLにリダイレクトしない限り(たとえば、302リダイレクトを使用して)、ユーザーがブラウザーのURLバーに表示する内容に影響はありません。これにより、ブラウザーはページをリロードします。

HTML5プッシュステート機能を使用して、求めていることを実現できます(プッシュステートがそのブラウザーでサポートされていない場合は、URLハッシュにフォールバックします)。

詳細については、次のURLを参照してください。

http://badassjs.com/post/840846392/location-hash-is-dead-long-live-html5-pushstate

また、BackboneJSとそのルーター機能を使用して、ブラウザーでページとURL処理ロジックを処理することもできます。

http://backbonejs.org/#Router

これは非常にアプリケーション固有の種類のソリューションであり、この回答は、正確な構成、アプリケーションロジックなどを知らずに詳細に説明することはできません。

于 2012-08-18T21:21:09.233 に答える
0

SEOのみを対象としている場合、最も簡単な方法は、リクエストを分析してデータベースからコンテンツを配信する1つのスクリプトにすべてのURLを渡すことです。のように

RewriteRule (.*) index.php?url=$1

もちろん、index.phpをルールから除外する必要があります。

于 2012-08-18T21:31:47.107 に答える