![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いつもお世話になっております。
mod_rewriteを使って、動的ページを静的ページのように表示したいと
考えております。
ですが、正規表現が間違っているようで、うまくリダイレクトされません。
test.php?aid=00000001
にアクセスされた場合
test/aid/00000001
と表示したいと考えております。
下記のように(他にもいろいろ試しましたが)やったのですが・・・
RewriteRule test.php?([0-9A-Za-z]+)$=([0-9]+)$ /test/$1/$2 [L]
ご教授よろしくお願いいたします。
<環境>
PHP:4.3.2
Apache:2.0.40 (Red Hat Linux)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?5a7ff87)
No.3ベストアンサー
- 回答日時:
以下を試してみてください。
◎ドキュメントルート(/home/test01/www)の下に、hogeディレクトリを作る。
◎hogeディレクトリ内に、test.phpを置く
<?php var_dump($_GET); ?>
◎hogeディレクトリ内に、.htaccessを置く
RewriteEngine on
RewriteRule ^test/([0-9A-Za-z]+)/([0-9]+)$ /hoge/test.php?$1=$2 [L]
◎以下のURLにブラウザからアクセス
http://your.domain.name/hoge/test/ABCDEF/2345
(your.domain.nameは適宜書き換えてください)
以下が表示されるはずです。
array(1) {
["ABCDEF"]=>
string(4) "2345"
}
うまくいかなかったら、mod_rewriteのインストール・設定がまずいのかもしれませんね。。。
この回答への補足
fdsjaklfjas さん サンプルのご提示ありがとうございます。
ご指示いただいたようにやってみたのですが、表示されません。
以前テストで、下記のように表記し
RewriteRule index\.html /test.php?sid=00000001
index.htmlにアクセスすると、test.php?sid=00000001
の内容が表示されていたので、インストールはできていると
思っていました。
httpd.conf にも LoadModule rewrite_module modules/mod_rewrite.soが
あることを確認しております。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?5a7ff87)
No.6
- 回答日時:
>画像のパスも mod_rewrite で書き換えるというのが一番スマートのような気がします。
>ですが、ページ数もかなりありますのでそのページごとに
>変換ルールを書く予定でおります。
>変換ルールは10個程度が限界だとどこかのページで見た気が・・・。
少なくとも、画像ファイル1つにつきRewriteRuleを1つ書く必要はないと思います(1つのRewriteRuleで多数の画像のURLの変換ができるはず)。
このへんの変換ルールの書き方がよく判らないようでしたら、以下をおすすめします。
・変換ルール(RewriteRule)を変える。
test/aid/00000001 ではなく、
test_aid_00000001 に書き換えるルールにする。
>あと、一度 test/aid/00000001 にアクセスし、アクセスしたページから
>再度 test/aid/00000001 にアクセスをすると
>test/aid/00000001/aid/00000001
>とパラメータがどんどん増えていってしまうのですが
まずは、test/aid/00000001の、リンクを張っている箇所のHTMLソースをみて、おかしなURLで無いか確認して下さい。
もしリンクのURLをPHPで動的に生成しているならば、PHPのプログラムの内容を合せて確認して下さい。
fdsjaklfjas さんご回答ありがとうございます。
・変換ルール(RewriteRule)を変える。
test/aid/00000001 ではなく、
test_aid_00000001 に書き換えるルールにする。
で操作するようにいたしました。
そのようにしたら、パラメータが増えるという現象もなくなりました。
ご丁寧にいろいろありがとうございました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?5a7ff87)
No.5
- 回答日時:
とりあえずうまくいってよかったです。
>画像等は相対パスで設定されているため、表示されなくなりました。
>これを表示するには、絶対パスで設定するしかないのでしょうか?
対策は、以下のようなものがあります。
・HTML中のimg srcパスを手で書き換える。
- 画像の相対パスの頭に、../../をつける。
- 画像のパスを絶対パスにする。
・変換ルール(RewriteRule)を変える。
test/aid/00000001 ではなく、
test_aid_00000001に書き換えるルールにする。
・画像のパスも、mod_rewriteで書き換える。
新しいRewriteRuleを追加する。
この回答への補足
fdsjaklfjas さんご回答ありがとうございます。
対策としてはいろいろあるようですね。
画像のパスも mod_rewrite で書き換えるというのが一番スマートのような気がします。
ですが、ページ数もかなりありますのでそのページごとに
変換ルールを書く予定でおります。
変換ルールは10個程度が限界だとどこかのページで見た気が・・・。
あと、一度 test/aid/00000001 にアクセスし、アクセスしたページから
再度 test/aid/00000001 にアクセスをすると
test/aid/00000001/aid/00000001
とパラメータがどんどん増えていってしまうのですが
これはなぜでしょうか?
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?5a7ff87)
No.4
- 回答日時:
うまくいかないようですね。
すみません。エラーログには、どのように出力されているのでしょうか。
また、以下のようにしても、やっぱりだめですか?
RewriteEngine on
RewriteRule test/([0-9A-Za-z]+)/([0-9]+) /hoge/test.php?$1=$2 [L]
これで解決しなかったら、すみませんが私には解決出来そうもありません。。。
fdsjaklfjas さん いろいろありがとうございます。
ご提示いただいたものでも、以前試しておりました。
.htaccess にはBasic 認証や php.ini の設定を記述しておりましたの
それは httpd.conf に書き、RewriteRule だけにしたら動きました。
ありがとうございます。
画像等は相対パスで設定されているため、表示されなくなりました。
これを表示するには、絶対パスで設定するしかないのでしょうか?
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?5a7ff87)
No.2
- 回答日時:
> SEO対策などで動的ページを静的ページに見せたいのですが
> ユーザがアクセス(リンク先)は↓
> test.php?aid=00000001
> で、実行結果を返しつつ、URLは↓
> test/aid/00000001
> にしたいと考えているのですが・・・
そもそも、SEO対策では、リンクのHTML記述を、
<a href="/test/aid/0000001">ほげほげ</a>
にして、検索エンジンのクローラーがリンクを辿りやすいようにするのが目的ですよね?
なので、SEO対策では、mod_rewriteの設定だけではなく、
リンク元のページのHTMLの書き換えをしなければなりません。
#<a href="/test.php?aid=0000001"> だったものを、
#<a href="/test/aid/0000001"> にします。
リンク元のページがPHPで動的に生成されているのであれば、
ob_start関数などを用いて、出力バッファリングを行ない、
自動的にHTMLの記述を書き換える手もあります。
(参考)http://jp2.php.net/manual/ja/function.ob-start.php
それから、SEO対策としては、
<a href="/test/aid/00000001"> よりも、
<a href="/test/aid/00000001.html"> みたいに、
拡張子をhtmlにしたほうがよいと聞いたことがあります。
(実際の効果は、測定したことが無いから判りません)
この回答への補足
fdsjaklfjas さん ご回答ありがとうございます。
リンク先をご指示いただいたものにし、
.htaccess内に
RewriteEngine on
RewriteBase /home/test01/www
RewriteRule ^/test/(0-9A-Za-z]+)/([0-9]+)$ /test.php?$1=$2
としたのですがページがありません、と言われてしまいます。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?5a7ff87)
No.1
- 回答日時:
SEO対策などで動的ページを静的ページに見せかけるのならば、
test/aid/00000001
にユーザがアクセスした場合に、
test.php?aid=00000001
の実行結果のHTMLをユーザに返したいのですよね?
だとしたら、RewriteRule の引数1と2が逆ですね。
あと正規表現もおかしいです。
以下でどうでしょう。
RewriteRule ^/test/(0-9A-Za-z]+)/([0-9]+)$ /test.php?$1=$2 [L]
#PHPではなくapacheの話ですが。。。
この回答への補足
fdsjaklfjas さん ご回答ありがとうございます。
Apacheの話ですね。申し訳ありません・・・
SEO対策などで動的ページを静的ページに見せたいのですが
ユーザがアクセス(リンク先)は↓
test.php?aid=00000001
で、実行結果を返しつつ、URLは↓
test/aid/00000001
にしたいと考えているのですが・・・
考え方がおかしいでしょうか?
fdsjaklfjas さんのやり方で、やってみましたが、URLの書き換えが
行なわれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP ECCUBE4のページ管理でPHPを実行させたい 1 2023/04/06 11:42
- PHP PHP ページング データベース 1 2022/06/16 10:30
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- HTML・CSS brにクラスをつけてcssでdisplay:none;としても改行されてしまいます 2 2022/06/22 14:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
localhost127.0.0.1で403エラー
-
PCに保存していた写真を見られ...
-
メルカリを退会して再登録した...
-
テキストボックスのフォーカス...
-
コマンドプロンプトで印刷実行
-
同名フォルダを作成し、そのフ...
-
VBSでメール送信
-
フォルダー名末尾空白のフォル...
-
VB6.0でダイヤルアップ接続を作...
-
includeやrequireでファイル参...
-
webサーバとPDFの関係(開く時...
-
バッチファイル pause時の文字...
-
C言語のコマンドの"flag"って何...
-
良く判らないファイル?
-
社内イントラサイトでのサイト...
-
Cドライブのダウンロードファイ...
-
excelファイルをASPで作る方法
-
同一サーバからだと他人に見ら...
-
BGMの入れ方
-
OpenFileDialogを使った後にも...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ECCUBE4のページ管理でPHPを実...
-
localhost/~.php で404エラー
-
javascriptとPHPを用いた自作ア...
-
cookieとhtaccessをつかったペ...
-
IISでhtaccessの記載
-
PHPのセキュリティ(ドキュメン...
-
caclsエラーについて。
-
mod_rewriteの正規表現
-
phpのエラーの意味がわかりませ...
-
Subversionで単体ファイルのバ...
-
PHPで、指定した要素の最後にHT...
-
同じサーバー内で複数のHPのi...
-
有料のレンタルサーバを借りた...
-
PHP リファラの偽装で、ブック...
-
コメントの開始位置をそろえるには
-
localhost127.0.0.1で403エラー
-
PCに保存していた写真を見られ...
-
Excelの関数について教えてくだ...
-
拡張子をつくる
-
Excelで外部のファイルの場所を...
おすすめ情報