2

重複の可能性:
わかりやすい URL を作成するための .htaccess。助けが必要

検索エンジン向けに最適化されたまま、PHP を介して MySQL データベースからコンテンツをロードする Web サイトを作成したいと考えています。

私はいくつかのアプローチを検討し、どの方法が最善かについてのアドバイスを探していました.

私の Web サイトのユーザーは、フォームに入力して送信し、SQL データベースに保存されます。新しいページごとに次のようにアクセスできるようにしたいと思います。

  • domain.com/plugins/なんでも
  • domain.com/plugins/anotherpagename _

いくつかの方法: 1. フォームが送信されると、スクリプトが plugins フォルダーに静的な HTML ページを生成します。ページが編集されると (編集ボタンが表示されます)、HTML ページは更新された情報で上書きされます。

  1. domain.com/plugins/whateverと domain.com/plugins/anotherpagenameすべて PHP スクリプトにリダイレクトされます

ただし、PHPスクリプトがページ名を取得してSQLデータベースを検索し、正しい情報を表示できる.htaccessを作成する方法がわかりません。

また、検索エンジンがこれらのページをどのように扱うかについてもよくわかりません。

  1. たぶん、他の誰かがこれに対するさらに良いアプローチを思い付くことができますか?

よろしくお願いいたします。

4

3 に答える 3

2

これを行う方法には、いくつかのオプションがあります。要件を満たす最も簡単な方法は、次を .htaccess ファイルに追加することです。

RewriteEngine on
RewriteRule ^/plugins/(.*)$ /yourscript.php?plugin=$1 [L]

上記はすべてのリクエストを/plugins/anythingyourscript.php に渡し、そこから を使用してプラグイン名にアクセスできます$_GET['plugin']

「プラグイン」が単なる例であり、使用できるようにしたい場合/anything/anythingは、すべてのリクエストを PHP スクリプトに渡し、リクエストされた URL を解析することをお勧めします。

これを行うには、.htaccess ファイルで次のようなものを使用します。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /yourscript.php [L]

それを打破するために、上記は Apache に、フ​​ァイルが存在しないすべての要求 (つまり、images/css/js など) を yourscript.php に書き換えるように指示します。

そこから、 経由で URL 全体にアクセスできます$_SERVER['REQUEST_URI']。文字列関数、正規表現などで分解できます。

于 2012-07-25T10:45:40.257 に答える
0

実際のディレクトリを作成してみませんか? 例えば。

domain.com/plugins/whatever domain.com/plugins/anotherpagename

any と anotherpagename は両方ともディレクトリになります。次に、ディレクトリ内に html ファイルを index.html として書き込みます。htaccess は不要で、上記と同じ URL を使用してアクセスできます。

于 2012-07-25T10:40:49.060 に答える
0

フレームワークを使用しているかどうかはわかりません。を使用して解決策がありますcodeigniter。他のフレームワーク/コア PHP を使用して同じことをシミュレートできます。

codeigniter具体的な解決策:

  1. config/routes.php で定義

    $route['plugins/(:any)'] = "plugins/getPageFromDb/$1"; この後、ブラウザの URL は同じ 'domain.com/plugins/whatever' になりますが、実際には、コントロールは 'whatever' をパラメータとして 'plugins' コントローラの 'getPageFromDb' 関数にヒットします。

  2. 「getPageFromDb」関数では、パラメーター「whatever」に基づいてデータベースからページを取得するコードを記述し、出力を直接またはビュー テンプレートを介してエコーする必要があります (ロジック/シナリオに応じて)。

また、パフォーマンスのために、html ページの静的バージョンを保持し、「getPageFromDb」関数に相対チェックを記述して、ページを静的または db のどちらから取得するかを決定できます。

URL 形式と整形式の HTML レンダリングを考慮すると、検索エンジンに適したページになるはずです。

于 2012-07-25T10:49:00.000 に答える