mod_rewrite は、疑似静的ページを実現できる Apache の非常に強力な機能です。以下で詳しい使い方を説明していきます
1. Apache が mod_rewrite をサポートしているかどうかを確認します
php が提供する phpinfo() 関数を通じて環境設定を表示し、Ctrl+F を使用して「ロードされたモジュール」を見つけます。これには、apache2handler が開いたすべてのモジュールがリストされています。「mod_rewrite」が含まれている場合は、すでにサポートされています。セットアップを続ける必要はありません。
「mod_rewrite」がオンになっていない場合は、Apache インストール ディレクトリ「/apache/conf/」の下にある httpd.conf ファイルを開き、Ctrl+F を使用して「LoadModule rewrite_module」を見つけ、その前にある「#」を削除します。
見つからない場合は、「LoadModule」エリアに移動し、最終行(必ず専用行)に「LoadModule rewrite_module, modules/mod_rewrite.so」を追加し、Apacheサーバを再起動してください。
2. Apache サーバーが .htaccess をサポートするようにします
ローカル APACHE サーバーで「.htaccess」をサポートさせるにはどうすればよいですか? 実際、Apache の httpd.conf 設定を変更するだけで、APACHE で .htaccess をサポートさせることができます。 httpd.conf ファイルを開きます (どこですか? APACHE ディレクトリの CONF ディレクトリ内)、
テキストエディタで開いた後、
が
に変更されました以上です。
3..htaccessファイルを作成します
.htaccess ファイルを作成する簡単な方法が 1 つあります:
メモ帳で開き、[ファイル] – [名前を付けて保存] をクリックし、ファイル名ウィンドウに「.htaccess」と入力し、緑色の部分全体に注目してください。
つまり、英語の引用符を含めて、「保存」をクリックします。
4.書き換えルール学習
新しい .htaccess ファイルを作成したら、次の内容をそのファイルに書き込みます:
#rewriteengine の RewriteEngine は書き換えエンジンのスイッチです。on はオン、off はオフです
RewriteRule ([0-9]{1,})index.php?id=1
RewriteRule について説明します。 RewriteRule は正規表現をサポートする書き換えルールです。上記の ([0-9]{1,}) は数値
を指します。
単語で構成されており、数字で終わることを示すエンドマークです。さて、これで疑似静的ページを実装できます: RewriteEngineonRewriteRule([a−zA−Z]1,)−([0−9]1,).htmlindex.php?action=1&id=2
([a-zA-Z]{1,})-([0-9]{1,}).html はルール、index.php?action=1&id=2 は置換される形式、1 は置換される形式を表します。
1 つの括弧は値と一致し、2 は 2 番目の括弧を表し、以下同様です。 !処理する PHP スクリプトを作成します:index.phpPHP code echo 'Your Action is: '._GET['action'];
エコー「
」
';
echo 'あなたのIDは:' $_GET['id'];
?>
さて、ブラウザに次のように入力してみましょう:
localhost/page-18.html
出力は次のとおりです:
あなたのアクションは: ページ
あなたのIDは: 18
Apache の httpd.conf を確認すると、LoadModule rewrite_module modules/mod_rewrite.so 行がありません。方法は次のとおりです。
Apache ソース コード パッケージのパスは次のとおりです: /ftp/httpd2.2
Apache インストールパス:/usr/local/apache/
1. mod_rewrite モジュールを追加します
エラーがない場合は、mod_rewrite.so ファイルが Apache のモジュール ディレクトリ (/usr/local/apache/modules) でコンパイルされる必要があります。
httpd.conf ファイルを編集し、次のように httpd.conf に mod_rewrite.so の読み込みステートメントが既に含まれていることを確認します。
LoadModule mod_rewrite_module modules/mod_rewrite.so2.Apacheを再起動します
1. 以下のエラーが発生した場合:
httpd: /usr/local/apache/conf/httpd.conf の 54 行目の構文エラー: ファイル /usr/local/apache/modules/mod_rewrite.so で API モジュール構造 `mod_rewrite_module' が見つかりません: /usr/ local/apache/modules/mod_rewrite.so: 未定義のシンボル: mod_rewrite_module
必要です
LoadModule mod_rewrite_module modules/mod_rewrite.so
が
に変更されました
LoadModule rewrite_module modules/mod_rewrite.so2.以下のエラーが発生した場合
httpd: /usr/local/apache/conf/httpd.conf の 54 行目の構文エラー: モジュール rewrite_module が組み込まれているためロードできません
モジュールが組み込まれており、転送する必要がないことを示します。コメントアウトします
#LoadModule rewrite_module modules/mod_rewrite.so
3. 仮想サイトの URL 書き換えを有効にする
1. httpd-vhost.conf を編集し、対応するサイトタグを追加します。
http://www.bkjia.com/PHPjc/929096.html