• 締切済み

「%」を含んだURLでサイトを表示させる

現在、ApacheでWebサーバを運用しております。 この度「%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92」 といったディレクトリ名でURLにアクセスしたいです。 URLがこのようになります↓ http://hogehoge/%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92/ ※上記「%」を調べた結果どうやら  http://hogehoge/ほげほげ/  とアクセスさせたいみたいです。 ところが現在のApacheの設定ですと、 File does not existエラーがでてうまくディレクトリ名が 認識されておりません。 ------------------------------------------------------------------ /ドキュメントルート/\xe3\x81\xbb\xe3\x81\x92\xe3\x81\xbb\xe3\x81\x92 ------------------------------------------------------------------ Webで調べたところ、 「mod_encoding」をApacheにインストールする必要があると 書かれていました。 そこで質問です。 まず1つ目ですが、そもそも「/%E3%81~」とは 日本語名等をUTFに置き換えた記述なのでしょうか? 次に2つ目ですが、「%」を含むURLを実現したい場合 どのようにすればよいのでしょうか? ※Wikipediaでは、「%」を含むURLを実現しているので  どのように実現しているのか知りたいです。 ※「mod_encoding」をインストールしないといけないのでしょうか ※「mod_encoding」を組み込んだことによる弊害があるとの  ことなので注意点ありますでしょうか。 ※その他、ほかの手法による実現 ご教授お願いいたします。 ◆Apacheバージョン httpd-2.2.2 ◆Apacheインストール時のconfigureオプション --------------------------------------- "--enable-ssl" \ "--enable-cache" \ "--enable-disk-cache" \ "--enable-mem-cache" \ "--enable-proxy" \ "--enable-proxy-balancer" \ "--enable-module=so" \ "--enable-rule=SHARED_CORE" \ "--enable-module=status" \ "--enable-mpm=prefork" \ --------------------------------------- ◆参考サイト http://www.dzeta.jp/tech/index.cgi?Apache%A4%C8%C6%FC%CB%DC%B8%EC%A5%D5%A5%A1%A5%A4%A5%EB%CC%BE%A4%C8%25 http://blog.dtpwiki.jp/dtp/2006/03/apachemod_encod_f38f.html http://www.aconus.com/~oyaji/faq/apache_encoding.htm http://webdav.todo.gr.jp/

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

ブラウザでは404 Not Foundになるのでしょうか 単純に/ほげほげ/というディレクトリが無いかディレクトリの文字コードが違う(EUC-JPになっているとか)のでは

bunmeidou
質問者

お礼

ご回答ありがとうございます。 そうですね、「404 Not Found」が返ってきます。 おっしゃるとおり、OSの文字コードが「EUC-JP」に なっております。 仕様で、OSの文字コード「EUC-JP」を使用となっているため 「EUC-JP」でできないか探しておりました。

  • eroermine
  • ベストアンサー率18% (83/444)
回答No.1

%表記は URLに含めない文字をcgiのオプション等で使うためのものなので、%表記のURLはそもそも不正な気が。 %20 で アスキーコード 20、つまりスペースを表します。 よって 2. % は ASCII コードで 0x25 なので %25 となります。 /%E3%81 これは 0xE3 0x81 が / から続いてる URLの一部ですが それが何を意味するかはそれでアクセスした人にしかわからない。 一種の暗号ですね。

bunmeidou
質問者

補足

ご回答ありがとうございます。 そうですね、おっしゃるとおり URLにcgi等のオプションとして以外 「%」は使用されない(?)ようなことが他サイトに 書かれておりました。 wiki等ではどうやって実現しているんでしょうね・・・(^^;) うーん。。

関連するQ&A

  • apache2.2 mod_proxy インストールについて

    現時、CentOS5にApache2.24をtarからインストールを行っているのですが、その際一緒にmod_proxyとmod_proxy_ajpを同時にインストールしようとしています。 いろいろ検索してもても ./configure --enable-proxy --enable-proxy-ajp make make install と多くのページで紹介されていたので この通りにしてみたところ インストールは無事に終わるのですが、 そこからmod_proxyやmod_proxy_ajpを探してもありません。 何度もやってみましたがダメでした。 インストール時に同時にこれらのモジュールをインストールするにはどうしたらいいのでしょうか?

  • Apache2 インストール後モジュール追加(proxy, proxy_ajp)

    標題の件でご教授ください。 現象としては、Apache2にモジュール(mod_proxy.soおよびmod_proxy_ajp.so)追加しようとして、mod_*.soが作成されず困っております。 なお、インストール時、configureにオプション"--enable-proxy" "--enable-proxy-ajp"を付加する方法は知っていますが、インストール後にモジュールを追加する方法を教えていただきたいです。 ■環境 OS: Red Hat Enterprise Linux 5.3 ■参考ページ 「Enjoi Blog」~apache2 にモジュールを追加する http://blog.enjoitech.jp/article/131 ■実行手順(mod_proxy.soの場合の例) 1.コンパイル。 [root@localhost proxy]# /usr/local/apache2/bin/apxs -c mod_proxy.c proxy_util.c /usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache2/include -I/usr/local/apache2/include -I/usr/local/apache2/include -c -o mod_proxy.lo mod_proxy.c && touch mod_proxy.slo /usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache2/include -I/usr/local/apache2/include -I/usr/local/apache2/include -c -o proxy_util.lo proxy_util.c && touch proxy_util.slo /usr/local/apache2/build/libtool --silent --mode=link gcc -o mod_proxy.la -rpath /usr/local/apache2/modules -module -avoid-version proxy_util.lo mod_proxy.lo 2.オブジェクトが作成されていることを確認。 [root@localhost proxy]# ls -la mod_proxy.* -rw-r--r-- 1 root root 88327 2月 1 2009 mod_proxy.c -rw-r--r-- 1 root root 4942 1月 11 2007 mod_proxy.dsp -rw-r--r-- 1 root root 32152 11月 12 2008 mod_proxy.h -rw-r--r-- 1 root root 758 10月 23 21:42 mod_proxy.la -rw-r--r-- 1 root root 303 10月 23 21:42 mod_proxy.lo -rw-r--r-- 1 root root 180184 10月 23 21:42 mod_proxy.o -rw-r--r-- 1 root root 0 10月 23 21:42 mod_proxy.slo [root@localhost proxy]# ls -la proxy_util.* -rw-r--r-- 1 root root 81086 7月 3 20:57 proxy_util.c -rw-r--r-- 1 root root 305 10月 23 21:42 proxy_util.lo -rw-r--r-- 1 root root 148440 10月 23 21:42 proxy_util.o -rw-r--r-- 1 root root 0 10月 23 21:42 proxy_util.slo 3.インストール→失敗。 [root@localhost proxy]# /usr/local/apache2/bin/apxs -ian proxy mod_proxy.la /usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' mod_proxy.la /usr/local/apache2/modules /usr/local/apache2/build/libtool --mode=install cp mod_proxy.la /usr/local/apache2/modules/ cp .libs/mod_proxy.lai /usr/local/apache2/modules/mod_proxy.la cp .libs/mod_proxy.a /usr/local/apache2/modules/mod_proxy.a chmod 644 /usr/local/apache2/modules/mod_proxy.a ranlib /usr/local/apache2/modules/mod_proxy.a PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules ---------------------------------------------------------------------- Libraries have been installed in: /usr/local/apache2/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Warning! dlname not found in /usr/local/apache2/modules/mod_proxy.la. Assuming installing a .so rather than a libtool archive. chmod 755 /usr/local/apache2/modules/mod_proxy.so chmod: cannot access `/usr/local/apache2/modules/mod_proxy.so': そのようなファイルやディレクトリはありません apxs:Error: Command failed with rc=65536 以上、よろしくお願いいたします。

  • SentOSでapacheとtomcatの連携

    いつもお世話になっております。 Linuxを始めて使っています。 仕事でapache2.2.4とtomcat5.5をインストールして連携させようしています。 ネットで色々とやり方を調べたところ Apache2.2よりmod_proxy-ajpモジュールとして提供されるようになり、別途設定ファイル を用意する事なくhttpd.confにて設定を行うだけということがわかりこの方法でやろうと思っています。 しかし、apache2.2.4をインストールしても/usr/local/apache2/modulesの中にはhttpd.expしか存在していません。 modulesの中にmod_proxy-ajpモジュールなどがあると思っているのですがこの考えは正しいでしょうか? 違っていればご指摘ください。 上記が正しかったとして私が行っているapache2.2.4のインストール手順を以下に記載します。 以下suを実行して管理者で行います。 (1)wgetでapacheをダウンロードする。 wget http://www.meisei-u.ac.jp/mirror/apache/httpd/httpd-2.2.4.tar.gz (2)/usr/local/srcでダウンロードしたファイルを展開する。 tar xvfz httpd-2.2.4.tar (3)コンパイル前設定を行う ./configure --prefix=/usr/local/apache2 --enable-proxy --enable-proxy-ajp --enable-so (4)makeでコンパイルする。 make (5)インストールする。 make install 以上です。 これで/usr/local/apache2/modulesにmod_proxy-ajpができると思っているのですが、存在しません。 ネットで調べると皆さんこのようにし上手くいっているようなのですが・・・。 全くの初心者ですのでLinuxを知っている方にとって常識なことでも わからない部分があるので色々とご教授いただければと思います。 よろしくお願いします。

  • 長くておかしなURLについて

    長くておかしなURLについて urlが下記のような非常に長いものがあります。 なぜこんなurlになるのか教えていただけないでしょうか? http://www.trial-cosme.info/%e3%83%88%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%ab%e3%82%bb%e3%83%83%e3%83%88%e3%81%ae%e9%81%b8%e3%81%b3%e6%96%b9/%e3%83%88%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%ab%e3%82%bb%e3%83%83%e3%83%88%e3%81%a7%e6%b0%97%e3%82%92%e3%81%a4%e3%81%91%e3%81%9f%e3%81%84%e4%ba%8b.html http://diet-yaseru1.net/%e3%83%80%e3%82%a4%e3%82%a8%e3%83%83%e3%83%88%e3%81%ae%e9%80%b2%e3%82%81%e6%96%b9/%e3%83%80%e3%82%a4%e3%82%a8%e3%83%83%e3%83%88%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%83%bb%e3%83%bb%e9%a3%9f%e7%94%9f%e6%b4%bb/%e3%83%80%e3%82%a4%e3%82%a8%e3%83%83%e3%83%88%e3%81%a7%e7%97%a9%e3%81%9b%e3%82%8b%e6%b0%b4%e3%81%ae%e9%a3%b2%e3%81%bf%e6%96%b9.html

  • 【Apache】アドレスバーにリライト前のURLを表示

    Apacheリライトに関する質問です。 http://ts1.example.com/xxxxx/test.cgi?hogehoge ↓ http://ts2.example.com/test.cgi?hogehoge というリライト設定を行いたいと思い、 RewriteRule ^/[^/]+/test.cgi http://ts2.example.com/test.cgi [L] という設定を入れました。 動作は問題ないのですが、ブラウザのアドレスバーのURLを http://ts1.example.com/xxxxx/test.cgi?hogehoge のままにしておき、内部的にリライトさせたいです。 (表面上は遷移していないように見せたい) 実現する方法はあるでしょうか? 宜しくお願い致します。

  • ApacheのURLエンコード

    URLエンコードで悩んでおります。 LinuxのApache1.3系では URLエンコードはGETで正しく処理できますが、 WindwosのApache2.0系では正しい値が取得できません。 ちなみにPOSTは漢字でも両方処理できました。 URLエンコードでApacheの設定で注意しないといけない点がありましたら 教えて下さい。 はてな ではLinuxのようです。 Apache/1.3.27 (Unix) (Vine/Linux) mod_perl/1.29 http://d.hatena.ne.jp/keyword/%c5%d4%b1%c4%c2%e7%b9%be%b8%cd%c0%fe?kid=930

  • apache2.0でのmod_encoding

    Webを見ていると下記のファイルをダウンロードし、コマンドを打つとかいてあります。 mod_encoding-20020611a.tar.gz mod_encoding.c.apache2.20020611a $ tar -zxvf mod_encoding-20020611a.tar.gz $ cd mod_encoding-20020611a/lib $ ./configure $ make $ su root # make install ファイルを解凍してもconfigureファイルはもちろんその他のソースコードがありません。(lib内には2ファイルあります。) 本家からダウンロードしたのですが。。。 mod_encodingをコンパイルし、使用するにはどのようにしたらいいのでしょうか?

  • mod_rewriteの設定方法について教えてください。

    mod_rewriteで下記のようにURLの書き換えの設定を行っているのですが、 実際のURL [A] http://hogehoge.com/index.cgi?a=123&b=abc ↓ アクセスするURL [B] http://hogehoge.com/123/abc/ となるように、下記のように設定を行ったのですが、 --------------------------------------------------------- RewriteEngine on RewriteCond %{HTTP_HOST} ^([^:]+) RewriteRule ^/([^\/]+)/([^\/]*) http://%1/index.cgi?a=$1&b=$2 [L,R] --------------------------------------------------------- 上記の設定を行ったうえで[B]にアクセスすると正しく[A]にアクセスは出来るのですが、ブラウザのアドレス欄は[A]のURLに変換されて表示されます。 これを[B]の表示のままにすることって可能なのでしょうか? もし可能なようでしたらその設定方法を教えていただけないでしょうか。 よろしくお願いいたします。 ApacheバージョンはApache/2.0.52です。

  • Fedora Core6にApacheをインストールしたい

    Fedora Core6を導入しています。 これにApacheをインストールしたいのですが、以下のように実行するとエラーが出てインストールできません。 # ./configure \ > --enable-mods-shared=all \ > --enable-proxy=shared \ > --disable-ipv6 \ > --prefix=/usr/local/src/origdev/opt/apache2 エラーメッセージとして checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures このように出ます。 この状態で#makeをして#make installをしても失敗します。 解決策はありませんか?

  • CentOS 5のApache2 UserDir

    さくらインターネットでCentOS 5の入った専用サーバを借りて勉強中です。 Apache2をインストールし、ユーザーディレクトリの設定をして、各ユーザーのホームディレクトリにあるpublic_htmlの中のディレクトリを参照するよう設定しました。 当初、下記サイトを参考に http://httpd.apache.org/docs/2.0/ja/mod/mod_user … 以下のように設定ファイルで設定したのですがうまくいきませんでした。(コメント部分は省略しています)。 --- <IfModule mod_userdir.c> UserDir public_html </IfModule> --- 上記設定で、http://○○○.com/~ユーザー名/にアクセスすると、ファイルが見つからない旨のエラーが表示されていました。 ログを確認すると以下のようになっていました。 --- [Sun Jul 31 20:56:19 2011] [error] [client ○○.××.△△.□□] File does not exist: /home/ユーザー名/\xe3\x82\xb3\xe3\x83\xa1\xe3\x83\xb3\xe3\x83\x88\xe5\xa4\x96 \xe3\x81\x97\xe3\x81\xbe\xe3\x81\x97\xe3\x81\x9f --- そこで、apacheの設定ファイルを以下のように書き直したところ --- <IfModule mod_userdir.c> UserDir /home/*/public_html </IfModule> --- 無事にサイトにアクセス出来るようになりました。 一応問題は解決したとはいえ、できれば --- <IfModule mod_userdir.c> UserDir public_html </IfModule> --- の方がなぜうまくいかなかったのかの原因も知りたいです。 原因と考えられるのは、さくらのサーバーを借りたときに最初のサーバーのデフォルトの文字が LANG=C だったのを、日本語を使うために LANG="ja_JP.UTF-8" に変更したことです。 が、英語名のディレクトリ名で問題が起こるか?と言う疑問と、文字コードが原因としてどうやればうまく行くんだ?という疑問があります。 どなたか原因が分かる方はいらっしゃいますでしょうか? よろしくお願いいたします。