- 1 名前:nobodyさん [02/06/11 19:29 ID:wH0rV3+D]
- Apacheのモジュール『mod_rewrite』に関連するスレです。
基本的な内容は↓ページを読むこと。 japache.infoscience.co.jp/rewriteguide/ japache.infoscience.co.jp/japanese_1_3_6/manual/mod/mod_rewrite.html それではマターリ逝きましょう。
- 436 名前:nobodyさん [2009/11/22(日) 04:53:44 ID:kXZj6gQw]
- 日本語をURLエンコードしているんだけど、それを半角英数に書き換え戻したいんだが。
無理だな。
- 437 名前:nobodyさん [2010/01/13(水) 21:00:23 ID:M9fqIs3k]
- 携帯端末以外からのアクセスをIPで弾いてるのだけど…
PCからのアクセスの場合どこに飛ばしたものか苦慮してる。 そこでhtaccessの挙動がまだよくわからんのだけど、 htaccessって最後まで読まれてから、その全ての記述が実行されてるんでしょうか。 それとも、上から順番に実行していって、例えば RewriteRule で [L]を末尾につけた場合はそこで処理がとまったりするんでしょーか。
- 438 名前:nobodyさん mailto:sage [2010/01/13(水) 22:47:13 ID:???]
- 設定ファイルに書かれた順序を考慮して動作するモジュールがあるというだけで、
設定ファイル自体はスクリプトではないので最後まで読まれます。
- 439 名前:nobodyさん mailto:sage [2010/01/15(金) 15:21:11 ID:???]
- まさかApacheスレを探していて、質問しようと思っていた項目専用のスレがあるとは・・・
今後宜しくです
- 440 名前:nobodyさん mailto:sage [2010/01/15(金) 15:32:27 ID:???]
- >>1のリンクをザッとみて良く分からなかったのですが、
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php の !\.(js|ico|gif|jpg|png|css)$ の部分の意味が良く分かりません PHPやJavaScriptとは違うようですし、正規表現のような気もしません これら! \ $の文字は言語で言うと何に分類されるのでしょうか? Apacheは専門的に勉強したことがないのですが、Apache専用の言語(演算子)なのでしょうか?
- 441 名前:440 mailto:sage [2010/01/15(金) 15:38:59 ID:???]
- ごめんなさい
普通に正規表現でした・・・
- 442 名前:nobodyさん [2010/01/21(木) 17:13:10 ID:r/4DT42h]
- RewriteCondの書き方でわかる方いたら教えてください
「base/pic」に入ってる画像のみ、rewriteしたくて、ほかはそのまま 表示したいのですが、どう書けばいいでしょうか? RewriteCond %{REQUEST_URI} !^.+\.(gif|jpg|jpeg|png)$ ですべての画像を弾くのはできそうなんですが…
- 443 名前:nobodyさん mailto:sage [2010/01/21(木) 17:53:48 ID:???]
- RewriteCond %{REQUEST_URI} base/pic.+\.(gif|jpe?g|png)$
/dummybase/pics0001.gif も条件に当てはまるけど。
- 444 名前:nobodyさん [2010/01/22(金) 14:19:51 ID:siFOym7C]
- >443
遅くなりましたが ありがとうございます!
- 445 名前:nobodyさん [2010/01/25(月) 08:26:20 ID:ckid/8q/]
- Redirect済みかどうかの判定ってできないんでしょうか?
ブラウザ上では /main/ が / になるように、301でリダイレクトしたいんですけど、 内部的には / を /main/ にしたくて / でも /main/ でも同じページが返されるようにしたいんです。 現状 ↓ RewriteRule ^/*main/?(.*)/*$ $1 [L,R=301,QSA] RewriteRule ^$ main/ [L,QSA] これだと無限ループになるんで、上のルールがリダイレクト済みなら評価しないっていうことが できればなあと思っています。 内部リダイレクトはNSフラグによるサブリクエストにはならないようですし、 REMOTE_ADDRでアクセスした時のURLがわかればと思ったけど それも内部リダイレクトで上書きされてしまうようでお手上げになってしまいました。
- 446 名前:nobodyさん mailto:sage [2010/01/25(月) 15:37:30 ID:???]
- 設計の問題だと思うけど。
例えば/index.cgiとか何らかのスクリプトを経由して /main/index.htmlを表示するようにバイパスすればいーんじゃねーの。
- 447 名前:nobodyさん mailto:sage [2010/01/25(月) 15:58:47 ID:???]
- >>445
IS_SUBREQでどう?
- 448 名前:nobodyさん mailto:sage [2010/01/25(月) 19:13:21 ID:???]
- mod_headerでダミーのヘッダをセットして2度目かどうかをチェックっていうのがあったな。
クライアントが変態でそのヘッダを自前で付けてきたら違う動作するだろうけど。
- 449 名前:445 mailto:sage [2010/01/26(火) 20:06:20 ID:???]
- レスありがとうございます。
>>448で一考したんですが、同等の考え方で、どうせQSAつけてるんだしって思って ?redirected=1みたいなクエリ付けてその判定を利用することにしました。
- 450 名前:nobodyさん [2010/02/03(水) 11:44:00 ID:yhcV776z]
- RewriteRule ^s/?f=([0-9A-Za-z)]+)$ /search/?f=$1 [L]
と書いたら、表示は出来ますが関数が無効になっています。 RewriteRule ^s/([0-9A-Za-z)]+)$ /search/?f=$1 [L] の場合では、関数が有効になっています。 出来れば「?f=」の形にしたいのですが、どうすれば良いでしょうか?
- 451 名前:nobodyさん mailto:sage [2010/02/03(水) 11:58:29 ID:???]
- メタ文字だからじゃない?
- 452 名前:nobodyさん [2010/02/03(水) 12:28:24 ID:yhcV776z]
- >>451
「全くその通りだ」と思って下の様に変更したのですが、変化がありません。 何か間違っていますか? RewriteRule ^s/\?f=([0-9A-Za-z)]+)$ /search/?f=$1 [L]
- 453 名前:nobodyさん mailto:sage [2010/02/03(水) 13:26:05 ID:???]
- 変換前はどんなURLなん?
- 454 名前:nobodyさん mailto:sage [2010/02/03(水) 15:02:44 ID:???]
- URLの?以降はRuleではマッチしないから、CondでQUERY_STRINGとマッチしておいて
Ruleで%数字の参照を使って値を引っ張るとさっさと教えてやれw
- 455 名前:nobodyさん mailto:sage [2010/02/03(水) 17:30:01 ID:???]
- 断る!
- 456 名前:nobodyさん mailto:sage [2010/02/03(水) 21:56:24 ID:???]
- と思ったけど・・・
- 457 名前:nobodyさん mailto:sage [2010/02/03(水) 23:16:17 ID:???]
- QSAフラグでもいいと思うよ
Query String Appendって意味 って誰か教えてあげて
- 458 名前:nobodyさん mailto:sage [2010/02/04(木) 13:45:36 ID:???]
- /username/test.phpにアクセスしたときにサーバー上の/u/s/e/username/test.phpにアクセスさせるようにするにはどうすればいいでしょうか?
文字列を一文字ずつにディレクトリを分解しておきたいのです。
- 459 名前:nobodyさん mailto:sage [2010/02/04(木) 13:57:10 ID:???]
- (.)(.)(.)(.*) を $1/$2/$3/$4 とか
- 460 名前:nobodyさん mailto:sage [2010/02/04(木) 14:01:13 ID:???]
- ユーザ名ごとにディレクトリ作ってんのかw
- 461 名前:nobodyさん mailto:sage [2010/02/04(木) 14:58:04 ID:???]
- >>459
ありがとうございます ((.)(.)(.).*) $2/$3/$4/$1でいけました >>460 何かいい方法があれば教えてくださいませんか 一つのディレクトリに詰め込むとすると数万から数十万のファイルやサブディレクトリを作ることになりそうです
- 462 名前:nobodyさん mailto:sage [2010/02/04(木) 15:20:30 ID:???]
- それで何か問題あるの?
- 463 名前:nobodyさん mailto:sage [2010/02/04(木) 15:38:53 ID:???]
- 数万のファイルやディレクトリが1か所にあると
操作が非常に重くなって使いものにならなくなる
- 464 名前:nobodyさん mailto:sage [2010/02/04(木) 15:44:31 ID:???]
- GUIでやらなきゃいいんじゃね?
- 465 名前:nobodyさん mailto:sage [2010/02/04(木) 15:49:45 ID:???]
- CUIでの話をしているのだが
- 466 名前:nobodyさん mailto:sage [2010/02/04(木) 15:50:46 ID:???]
- まあ最近のOSのファイルシステムならあまり心配いらないのかもしれないね
環境書いてないからそんな前提入れられないけど
- 467 名前:nobodyさん mailto:sage [2010/02/04(木) 15:52:30 ID:???]
- どういう操作すると重くなるの?
- 468 名前:nobodyさん mailto:sage [2010/02/04(木) 15:53:40 ID:???]
- CUIどころかそのディレクトリのファイルの一つをプログラムから
読みに行こうとするだけで重くなる。SunOSの古いやつだけど もし持ってたらやってみるといい
- 469 名前:nobodyさん mailto:sage [2010/02/04(木) 15:54:49 ID:???]
- 新しくすれw
- 470 名前:nobodyさん mailto:sage [2010/02/04(木) 16:01:10 ID:???]
- ディレクトリ分けに賛成
- 471 名前:nobodyさん mailto:sage [2010/02/04(木) 17:24:09 ID:???]
- FC2のブログも画像ファイルはユーザ名の頭三文字を1字ずつディレクトリ作ってるね
まさかURL上だけ分けてるってことはないだろうけど
- 472 名前:nobodyさん mailto:sage [2010/02/04(木) 18:51:28 ID:???]
- そんなときはReiserFS
- 473 名前:nobodyさん mailto:sage [2010/02/04(木) 19:13:17 ID:???]
- 例えばext2/3だとサブディレクトリの数は32,000個までという制限がある
また、1ディレクトリのファイル数も実用上1万程度が限界点となっている そういうFSでは458みたいな工夫が必要になるわな
- 474 名前:nobodyさん mailto:sage [2010/02/04(木) 19:18:26 ID:???]
- ReiserFSは作者が奥さん殺しちゃったからな
- 475 名前:nobodyさん mailto:sage [2010/02/04(木) 21:52:42 ID:???]
- へー
で?
- 476 名前:nobodyさん mailto:sage [2010/02/11(木) 12:27:02 ID:???]
- hoge.example.com/
にアクセスしたら /home/test/public_html/common/index.php?sub=hoge とするにはどうすればいいのでしょうか?
- 477 名前:nobodyさん mailto:sage [2010/02/11(木) 12:49:30 ID:???]
- ^/$ ??????
- 478 名前:nobodyさん mailto:sage [2010/02/11(木) 12:51:44 ID:???]
- oh, i'd been misled.
- 479 名前:nobodyさん mailto:sage [2010/02/12(金) 20:32:58 ID:???]
- I like watermelon.
- 480 名前:nobodyさん mailto:sage [2010/02/15(月) 21:20:36 ID:???]
- httpsのみrewriteできないんだけど、そんな設定とかあんのかな?
これはhttp→httpsにしてくれるけど、 RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} (^/aaaa.php.*$) RewriteRule /(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} これはhttps→httpにしてくれない RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{REQUEST_URI} !(^bbbb.php.*$) RewriteRule /(.*)$ %{HTTP_HOST}%{REQUEST_URI} httpにしてくれないどころか、適当なRewriteRule書いても反応して くれてないんで、RewriteCond %{SERVER_PORT} ^443$ で https を 捕まえてくれてないっぽい。{HTTPS} on|of でもダメでした。 なにがまずいのか、誰かボスケテ。
- 481 名前:nobodyさん mailto:sage [2010/02/15(月) 21:27:14 ID:???]
- %{SERVER_PORT}が443になってるかどうかは確認した?
- 482 名前:nobodyさん mailto:sage [2010/02/16(火) 09:02:50 ID:???]
- >>481
オス。 ssl.conf に Listen 443 httpd.conf に Listen 80 ssl.confはちゃんと読み込まれてる。 別件でパケットキャプチャ使ったんだけど、ちゃんと80、443で動いてるみたい。 なんだろうなー。よく解ってない人が管理してたサーバーの引継ぎで散々苦労 したんだけど、これが片付けば一段落つくのにドン詰まり;
- 483 名前:482 mailto:sage [2010/02/16(火) 09:10:16 ID:???]
- 念のためにPHPから echo $_SERVER['SERVER_PORT'] で出してみた。
http,https、それぞれ80,443 になってる。
- 484 名前:nobodyさん mailto:sage [2010/02/16(火) 09:12:16 ID:???]
- いや、そのrewriteルールに到達してない可能性があるんじゃない?
rewriteLogを確認するか、 RewriteCond %{SERVER_PORT} ^443$ のところで、環境変数にでも入れて、その行に来てるかどうかを確認してみたらどうかなと。 よくあるのは、httpのvirtualhostとsslのvirtualhostを分けてて、 そもそも、sslのときはそのルールは適用されてないとかね。
- 485 名前:482 mailto:sage [2010/02/16(火) 10:34:15 ID:???]
- >>484
返答ありがと。 rewrite_log確認しました。 >480 の記述で、 httpの時は RewiteRule の apply pattern がふたつ出力された後に httpの時のRewriteCond の評価やってるけど、httpsの時は何も出力 されない。 RewiteRuleの時点でひっかかってくれてないな。 他の記述を全部とっぱらって、 ^443$ 関連の記述のみにしても、なにも 出力されてない。パッと見では https の時はガン無視して素通りされて るような感じなんだよなー。 人が設定したモンなんでもしやと思って virtualhost も確認してみたけど、 それは無かった。 なんだろう???
- 486 名前:nobodyさん mailto:sage [2010/02/16(火) 10:50:57 ID:???]
- > パッと見では https の時はガン無視して素通りされてるような感じなんだよなー。
その通りだろう
- 487 名前:nobodyさん mailto:sage [2010/02/17(水) 11:56:15 ID:???]
- httpsの時はallowoverrideがNoneとか
- 488 名前:482 mailto:sage [2010/02/17(水) 15:38:46 ID:???]
- >>487
.htaccess は使わずに httpd.conf に書いてる。
- 489 名前:nobodyさん mailto:sage [2010/02/17(水) 15:40:10 ID:???]
- じゃあ描いてる場所だな
- 490 名前:482 mailto:sage [2010/02/17(水) 16:40:58 ID:???]
- >>489
んー、conf.d とこのファイルも怪しいな。 も一回確認してくる =3
- 491 名前:nobodyさん [2010/02/26(金) 00:23:34 ID:GCPXDWut]
- /index.html
/m/index.html htaccessを使用して 見た目上のURLは変えずに PCからなら /index.html 携帯からなら/m/index.html に飛ばすことは可能でしょうか? RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^$ /m/ [R] これだと携帯でアクセスすると見た目上のURLが/m/になってしまいます。 ご教授お願いします。
- 492 名前:nobodyさん mailto:sage [2010/02/26(金) 00:53:17 ID:???]
- それでいいんじゃないの
- 493 名前:nobodyさん mailto:sage [2010/02/26(金) 04:54:39 ID:???]
- [R] を取っ払えばよさそう
- 494 名前:nobodyさん [2010/03/25(木) 10:21:37 ID:Vmjt6F6A]
- mod_rewriteの設定について
mod_rewriteの設定について 現在 *.test.example.comへのアクセスはドキュメントルートが/home/homepage/public_html/ になっています。 サブドメイン名でアクセスするディレクトリを変更したいです。 例) xxx.test.example.com → /home/homepage/public_html/xxx/ yyy.text.example.com → /home/homepage/public_html/yyy/ 以下のように設定してみたのですが、思い通りにいかない事がいくつかあります。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^[a-z]+\.test\.example\.com$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+) %{HTTP_HOST}$1 [C] RewriteRule ^([a-z]+)\.test\.example\.com(.*)$ /$1/$2 </IfModule> xxx.test.example.com/index.html → ○ xxx.test.example.com/ → ×(index.htmlが表示されて欲しい) xxx.test.example.com/img/img.jpg → ×(/xxx/img/img.jpg は存在します) 分かる方よろしくお願いします。
- 495 名前:nobodyさん mailto:sage [2010/03/25(木) 11:17:26 ID:???]
- 最初のはDirectoryIndexで再投函されたあとの挙動だろうけど
下の方は、xxx以下にrewriteしてから、-fチェックをするようにしてみたら?
- 496 名前:nobodyさん mailto:sage [2010/03/28(日) 14:03:16 ID:???]
- それ、mod_vhost_alias使った方がいいんじゃね?
- 497 名前:nobodyさん [2010/04/20(火) 05:07:38 ID:rovGBKgZ]
- example.com/aaa.php?x=1&y=2
これを example.com/bbb/?x=1&y=2 にURLを書き換えたいのですがうまくいきません。 どう書けば良いでしょうか?よろしくお願いします。
- 498 名前:nobodyさん mailto:sage [2010/04/21(水) 02:35:33 ID:???]
- /aaa.php /bbb/ [L]
と,テストもせず勘でレスしてみる
- 499 名前:497 [2010/04/22(木) 08:40:39 ID:zYh2UuQ3]
- >>498
ありがとうございます。うまくいきました。 最後にもう1つだけ質問させてください。 example.com/aaa.php?x=1 これを example.com/bbb/?y=1 に書き換えたいのですがよろしくお願いします。 xをyに書き換えたいです。
- 500 名前:nobodyさん mailto:sage [2010/04/22(木) 23:00:17 ID:???]
- それ意味あるのかね
ぱっと分からんけど,できそうだからこのへん見てみたら? httpd.apache.org/docs/2.2/ja/mod/mod_rewrite.html Modifying the Query String のとこ。英語だけど
- 501 名前:nobodyさん mailto:sage [2010/06/11(金) 07:22:35 ID:???]
- 1.3のは訳がある
httpd.apache.org/docs/1.3/mod/mod_rewrite.html
- 502 名前:nobodyさん mailto:sage [2010/08/01(日) 20:38:54 ID:???]
- test.com/old/ というディレクトリを
new.com/ として下位のディレクトリもそのまま 転送したいのですが、どう設定したらいいんでしょう? うーん。エラーばっか・・・orz
- 503 名前:nobodyさん [2010/08/02(月) 16:59:31 ID:4s58A5gB]
- age
- 504 名前:nobodyさん mailto:sage [2010/08/12(木) 21:39:28 ID:???]
- 試してみたことを全部書いてみれば?
- 505 名前:nobodyさん [2010/08/20(金) 14:39:18 ID:vi5gBlqp]
- すいません、
httpsでアクセス時に、特定のURLを除いて全てhttpにリダイレクトするようにしたいのですが、 どのような書き方をすればよいでしょうか?調べたのですが分からなくて・・ 教えていただけると嬉しいです。
- 506 名前:nobodyさん mailto:sage [2010/11/21(日) 11:03:23 ID:???]
- 無限ループで困っています。
やりたいこと HTML5対応のブラウザで自宅のファイルサーバの中にある mp4動画ファイルを独自に設置したプレイヤーで再生する。 やったこと mp4が置いてある場所をmod_autoindexで表示させる mp4ファイルがクリックされたらphpに飛ばしてプレイヤーのHTMLを生成 上記のmp4ファイルがクリックされたらphpに飛ばす。という部分を mod_rewriteで実現しようと、.htaccessに以下のような記述をしました。 RewriteEngine On RewriteRule (^.*\.mp4$) video.php これによりhoge.mp4がクリックされたらvideo.phpで <video src='hoge.mp4'>と展開されますがこのsrc='hoge.mp4'が 無限ループの原因のようです。 よろしくお願いします
- 507 名前:nobodyさん mailto:sage [2010/11/21(日) 11:53:53 ID:???]
- pathを限定すればいいと思う
<video src='./hoge.mp4'> として RewriteEngine On RewriteRule (^[^\.]+.*\.mp4$) video.php
- 508 名前:nobodyさん mailto:sage [2010/11/24(水) 09:45:59 ID:???]
- > これによりhoge.mp4がクリックされたらvideo.phpで
> <video src='hoge.mp4'>と展開されますがこのsrc='hoge.mp4'が > 無限ループの原因のようです。 まんまやん。 展開したファイルで自分にリクエストが来るんだから、 video.php からvideo.phpを呼んでいるようなもの。 mod_rewirteじゃなくてロジックを見直したら?
- 509 名前:nobodyさん mailto:sage [2010/11/24(水) 09:52:50 ID:???]
- hoge.mp4?m=d
などとパラメータ付きのアクセスの時はvideo.phpに飛ばさないというルールを付ければ?
- 510 名前:nobodyさん mailto:sage [2010/11/24(水) 12:41:50 ID:???]
- 晴れてるのに寒い
- 511 名前:nobodyさん [2010/12/30(木) 15:12:15 ID:ZxF9k5/L]
- www.hoge.com/dir/index.cgi?cat=0&page=1
↑このアドレスを、↓このように書き換えたいのですが、 www.hoge.com/dir/0/1 &page=1の部分が上手く渡せていないらしく、上手く表示できません。 (page=1が2ページ目、何もない場合は1ページ目) 1ページ目のwww.hoge.com/dir/0は表示できます。 .htaccessの添削をお願いします。 現在の.htaccessは以下の通りです。 DirectoryIndex index.cgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #RewriteBase /dir/ (現在コメントアウト) RewriteRule ^(.*)$ index.cgi?cat=$1 [L] RewriteRule ^(.*)/(.*)$ index.cgi?cat=$1&page=$2 [L,QSA] 使用しているサーバはxreaで、お金を払って広告を消している状態です。
- 512 名前:nobodyさん mailto:sage [2010/12/30(木) 15:38:43 ID:???]
- あー、今できました。
([0-9]+)これでした。。。。 スレ汚し失礼しました。
- 513 名前:nobodyさん [2011/01/07(金) 14:14:51 ID:aOiY5pIw]
- example.com/foo
にアクセスすると example.com/bin/foo.cgi にアクセスするようにするにはどうすればいいでしょうか? お願いします。
- 514 名前:nobodyさん mailto:sage [2011/01/07(金) 20:31:41 ID:???]
- ひとつ上のレスも見れんのか
- 515 名前:nobodyさん mailto:sage [2011/01/10(月) 20:21:12 ID:???]
- RewriteRule ^/news/(20[0-9][0-9].*)$ /cgi-bin/news?file=$1 これは動くんだが、反対に
RewriteRule ^/cgi-bin/news?.*?file=(....).*$ /news/$1 にすると動かない。 リライトする前の元のURLがCGIの動的ページの場合の引数を変数に格納するにはどうしたらいいの?
- 516 名前:nobodyさん mailto:sage [2011/01/10(月) 20:23:35 ID:???]
- 書き方が違った、動かないのは
RewriteRule ^/cgi-bin/news.*?file=(....).*$ /news/$1 ちなみにPerlのスクリプトとして、 $line=~ s/news.*?file=(....).*$/news\/$1/; とするとちゃんと動く。
- 517 名前:nobodyさん mailto:sage [2011/01/11(火) 08:07:21 ID:???]
- Rewritehではcgiとかの引数部分の?以降の行をマッチさせることはできないよ。
- 518 名前:nobodyさん mailto:sage [2011/01/11(火) 21:29:16 ID:???]
- 環境変数のQUERY_STRING見ればおk
- 519 名前:nobodyさん [2011/01/25(火) 11:12:35 ID:y5ZC6NKj]
- 質問させてください
やりたいことは www.aaa.com/hoge/○○.php?id=123 にアクセスがあった場合 /home/user/public_html/test/○○.php?id=123 に移動させて ○○.phpで name=hoge id=123 と表示させたい ○○.phpはindex.phpやmail.phpなど色々対応させたい です。よろしくお願いします。
- 520 名前:nobodyさん mailto:sage [2011/01/25(火) 20:41:34 ID:???]
- ぐぐれば山ほどサンプルあるよ
- 521 名前:nobodyさん mailto:sage [2011/01/25(火) 23:56:19 ID:???]
- やればえーがな
何が質問なのか判らない
- 522 名前:nobodyさん mailto:sage [2011/01/26(水) 00:35:06 ID:???]
- じゃあそのルール書いてみ
- 523 名前:519 mailto:sage [2011/02/03(木) 22:51:57 ID:???]
- 解決しました
ありがとうございました
- 524 名前:nobodyさん mailto:age [2011/02/20(日) 11:59:15.05 ID:???]
- phpベースのサイトを運営しているのですが、SEO対策のためにサイト全体をhtmlとして動作するように変更したいと考えて
います。※サイト上にはphpファイルしか置かない。(htmlファイルは設置しない) 具体的には以下のようにしたいと考えています。 ※サイト上に設置している「phpinfo.php」の表示を例にあげています。 1.htmlアクセス(phpinfo.html)を、phpにリライトする。 つまり、URLは「phpinfo.html」のまま 「phpinfo.php」 の実行結果を返す。 ------------------------------------ RewriteRule (.*).html$ /$1.php [L] ------------------------------------ 2.phpアクセス(phpinfo.php)を、htmlにリダイレクトする。 つまり、URLが「phpinfo.html」となり、 「phpinfo.php」 の実行結果を返す。 ------------------------------------ RewriteRule (.*).php$ /$1.html [R=302,L] ------------------------------------ 上記の対応を実際してみたのですが、なぜかリダイレクトがループしてしまいました。 1.と2.のどちらか一方のみであれば正常動作するのですが、両方記述するとリダイレクトがループします。 原因と対処法をご存知のかたがおられましたらお手数ですがご教授よろしくお願いいたします。
- 525 名前:nobodyさん mailto:sage [2011/02/20(日) 13:26:00.17 ID:???]
- ドメインはどこ行った?
- 526 名前:nobodyさん mailto:sage [2011/02/21(月) 02:54:08.45 ID:???]
- ケース2って要らないんじゃない?
- 527 名前:nobodyさん mailto:sage [2011/02/21(月) 04:04:41.44 ID:???]
- 2ちゃんって要らないんじゃない?
- 528 名前:nobodyさん mailto:sage [2011/02/26(土) 01:34:00.97 ID:???]
- ケース2やらないとPHPのほうをGoogle先生にインデックスされちゃったら若干評価下がりそうだよ
- 529 名前:nobodyさん mailto:sage [2011/03/01(火) 02:00:25.16 ID:???]
- rewriteRuleだけじゃ無理かもね
RewriteCond を組み合わせればなんとかなるかも知れない。具体的に書けてないですが
- 530 名前:nobodyさん mailto:sage [2011/03/01(火) 03:10:11.66 ID:???]
- Lが付いてるからループせずに止まりそうな気もするけど…
RewriteLogにはやっぱり延々と出続けるんだよな。
- 531 名前:nobodyさん mailto:sage [2011/03/01(火) 18:19:17.29 ID:???]
- [L] で書き換えは止まるけど書き換えたリクエストがまた来てぐるぐる。
要件どおりならphpファイルを全部 \.html$ にリネームして(ソースの該当個所等も書き換え) これで済むような。 AddHandler application/x-httpd-php .html
- 532 名前:nobodyさん mailto:sage [2011/03/02(水) 02:43:49.02 ID:???]
- 勝手に処理変えるの止めて欲しい
昔のバージョンのconfが間違った動きするのでムカつく
- 533 名前:nobodyさん mailto:sage [2011/03/08(火) 22:33:11.43 ID:???]
- httpd.confの<VirtualHostの中にRewriteCondとRewriteRuleを
書いても何も変化がないのでそもそもmod_rewriteが機能してるかどうかが 不安になってきた・・・。どの環境でも必ず動くテスト確認みたいなのってないですかね?
- 534 名前:nobodyさん mailto:sage [2011/03/08(火) 22:49:35.22 ID:???]
- RewriteEngine on
RewriteRule ^/(.*)$ www.google.com/$1 [R=301,L] これでグーグル飛ばなかったから動いてないな。。。
- 535 名前:nobodyさん mailto:sage [2011/03/09(水) 08:59:30.27 ID:???]
- >>533
RewriteLog じゃだめなの?
- 536 名前:nobodyさん [2011/06/03(金) 10:13:42.69 ID:b3b8utu4]
- 二段リライトって使えたっけ?
一度リライトして偽装してるURLを、 もうちょい見通し聞くように書き換えたいんだけども。 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^entry/(.+)$ hoge.php?id=$1 [L] としてたとして、 entry/〜へのアクセスをrenew/〜に遷移させるみたいな。 新規アクセスは書きなおすだけでいいけど、クローラーとか旧リンクへのアクセスが死んじゃう。 RewriteRule ^renew/(.+)$ hoge.php?id=$1 [L]
|

|