mod_rewrite の質問です。


xoopsのモジュールpicoを利用し、httpd.confで以下のような設定をしています。
遅くなるので、.htaccessではなく、httpd.confで利用したいと考えています。

Q1. http://www.example.com/page/ にアクセスすると、ブラウザ上のURLが、http://www.example.com/modules/page/ のようになってしまいます。ブラウザ上でも、http://www.example.com/page/ とするにはどうすればよいでしょうか?

Q2. RewriteRule ^/page/([^\/]*)$ http://www.example.com/modules/page/$1 [L] の、http://www.example.com の部分がないと404エラーになってしまうのですが、http://www.example.com が必要な場合と、必要でない場合の違いを教えて下さい。

<VirtualHost 192.168.100.200>
ServerAdmin webmaster@example.com
DocumentRoot /var/htdocs/example.com/www
ServerName www.example.com

AcceptPathInfo On
RewriteEngine on
RewriteLog /var/log/httpd/rewrite_log
RewriteLogLevel 3

RewriteCond %{REQUEST_URI} !\.(ico|gif|jpg|png|css|js)$
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/page/([^\/]*)$ http://www.example.com/modules/page/$1 [L]
</VirtualHost>

回答の条件
  • 1人3回まで
  • 登録:2007/09/18 01:03:50
  • 終了:2007/09/25 01:05:03

回答(3件)

id:subweb No.1

subweb回答回数21ベストアンサー獲得回数02007/09/18 01:34:35

ポイント27pt

Q1

http://www.example.com/page/ にアクセスし、

http://www.example.com/page/ にいきたい場合は、

mod_rewriteの設定はいらないのではないでしょうか。

問題になっているのは

一番下に書いてある [L] のところのURLが

http://www.example.com/modules/page/ になっているからです。

http://www.example.com/page/ に変えれば良いと思います。


Q2

RewriteRule ^/page/([^\/]*)$ /modules/page/$1 [L]

このように書いているということでしょうか。

ちょっと現象が分からないですが、

RewriteRule ^/page/([^\/]*)$ /modules/page/$1 [P,L]

とかしてみてはどうでしょうか。

id:p_question

Q1. http://www.example.com/page/ にアクセスし、http://www.example.com/modules/page/ で処理させたいが、ブラウザ上のURL表記は、http://www.example.com/page/ のままであって欲しいという意味です。現状、ブラウザ上

のURLがhttp://www.example.com/modules/page/ になってしまい、リダイレクトされているように見えてしまっているという問題です。

Q2. RewriteRule ^/page/([^\/]*)$ http://www.example.com/modules/page/$1 [L] と書いています。

なぜ、 RewriteRule ^/page/([^\/]*)$ /modules/page/$1 [L] という設定では、404エラーなのか? という質問です。

ちなみに、教えて頂いた P を入れる方法では、404エラーになりました。

RewriteRule ^/page/([^\/]*)$ /modules/page/$1 [P,L]

2007/09/18 01:46:54
id:hblm No.2

hblm回答回数243ベストアンサー獲得回数232007/09/18 02:03:09

ポイント27pt

こちらが参考になるでしょう。

PEAK XOOPS - News


のぶのぶさんの別館サイトの方でも、XCL向けのハックが使われています。

内容については、本館のYYBBS内にある記述が参考になると思います。

id:p_question

のぶのぶさんのサイトの話は、この内容のことでしょうか?

http://www.kowa.org/modules/yybbs/viewbbs.php?bbs_id=4&seria...

試して見ましたが、失敗しますね…

ちなみにXCL2.1を利用しています。

.htaccessを使えばうまくいくかも知れませんが、できればhttpd.confを利用したいところです。

2007/09/18 03:12:57
id:subweb No.3

subweb回答回数21ベストアンサー獲得回数02007/09/18 16:35:39

ポイント26pt

取り急ぎQ1 についてですが、

[P,L]でおこなうと、見た目は変わらず内部的にリダイレクトされます。

Q1の要項を満たせるかと思います。

id:p_question

確かにP(Proxy) を入れると、ブラウザ上でURLはそのままになり、Q1は解決できました。

もちろん、思ったような動作はしませんでした。

[PT](pass throught) を設定すると、思った動作をしているようです。

2007/09/22 19:22:14
  • id:hblm
    > .htaccessを使えばうまくいくかも知れませんが、
    > できればhttpd.confを利用したいところです。

    大変言いにくいのですが、httpd.confの書き方がわかっていない、というオチではないですよね?(私は信じています) .htaccessとhttpd.confの記述は、基本的に同じものですので。。



    ブラウザ上の表記を変えたいのであれば、紹介したような手法で、mainfile.phpにハックを仕掛ける必要があるでしょう。Simplified URLsを参考にrewrite_rileを見直すのが現実的かと思います。


    お役に立てなくて申し訳ないです。
  • id:p_question
    どの程度をわかっていると言うのかがわからないので、わかっていないということになるかも知れません。

    >.htaccessとhttpd.confの記述は、基本的に同じものですので。。

    記述方法は同じということは理解していましたが、動作は異なると理解していました。

    自分の環境では、同じものを書くと違う動作をするので、別物という結論になっていました。マニュアルを見た限りですと、動作の順番が違うので違う動きをするものなのかなと。

    現状、ご指摘の通り、.htaccess + mainfile.phpに書くとちゃんと動作します。

    しかし、httpd.confに書くと動作しません。
    今まで書いている通り、httpd.conf は、http:// から、かかないと動作しません。

    この違いは、どこから来ているのか? が引用部分の意味です。

    ちなみに、Wordpress の .htaccessの内容も httpd.conf に書いたら、動作しませんが、.htaccessに書くと動作します。マニュアルにもhttpd.confではなく、.htaccessに書けとしか書いていない。
    ということから、httpd.conf に書く内容は別物と理解しておりましたが、どこかの設定によって変わるのかも知れません。という意味もあり、viurtualhost の内容も記述しております。

    httpd.conf に .htaccess と同じ内容を書いたら、同じ動作をするという仕様は、間違いないということで良いのでしょうか?
  • id:hblm
    > httpd.conf に .htaccess と同じ内容を書いたら、
    > 同じ動作をするという仕様は、
    > 間違いないということで良いのでしょうか?

    逆です。同じ内容を書いたはずなのに、同じ動作をしないのですから、あなたが同じ意味の内容を書いていないのです。


    ヒント1:脳内動作なのであてにならないかもしれませんが、httpd.confに書くときはRewriteBaseをきちんと設定してあげると幸せになれるかもしれません。


    ヒント2:XOOPSが設置されているviurtualhostに対して実行されるように書いていますか?
  • id:takabow
    > hblmさん
    RewriteBaseはhttpd.conf内では使えませんよー
  • id:hblm
    id:takabowさん ありがとうございます。へぇ~って感じです。勉強になりました。
  • id:p_question
    RewriteBaseが使えないということは、

    1. httpd.conf と .htaccess には、同じ内容を書くことはできない
    2. httpd.conf と .htaccess に同じ内容を書いても同じように動作しない

    ということで良いのですよね?

    少なくとも、 httpd.conf の頭に / をつけるか、.htaccess に RewriteBase / をつけないと同じ動作はしない

    と理解したのですが
  • id:p_question
    申し訳ないのですが、これはどういう意味でしょうか?

    >ヒント2:XOOPSが設置されているviurtualhostに対して実行されるように書いていますか?

    質問に書いた通りに設定しており、そのvirtualhostに対して実行されると理解していたのですが、<virtualhost ...></virtualhost>の中で設定しても、そのvirtualhost以外に実行されることがあるということでしょうか?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません