• ベストアンサー

Apacheのmod_rewriteでURLの書き換え

Apacheのmod_rewriteでURLを書き換えたいと思います。 ルートデイレクトリは"C:/Program Files/Apache Group/Apache2/htdocs"です。   そして、http://localhost/sample/ と打ったときに、"C:/Program Files/Apache Group/Apache2/htdocs/sample"ではなく、"C:/tmp/test"にアクセスされるようにするには、httpd.confにどのような設定を追加すればよいのでしょうか? Apache 2.0.63 Windows Vista

質問者が選んだベストアンサー

  • ベストアンサー
noname#246547
noname#246547
回答No.1

ご質問の用件を満たしたい場合、mod_rewriteではなく、mod_aliasを使用したほうがいいですね Alias /sample "C:/tmp/test" <Directory "C:/tmp/test"> Order allow,deny Allow from all <LimitExcept GET POST> Order deny,allow Deny from all </LimitExcept> </Directory>

参考URL:
http://httpd.apache.org/docs/2.0/ja/mod/mod_alias.html
atomickey
質問者

お礼

なるほど、mod_aliasを使えばよかったのですね。 おかげさまで無事出来ました。ありがとうございます。

関連するQ&A

  • mod_rewriteが効かない!

    サーバの運用上、mod_rewriteを使う必要が出来たので設定してみたのですが効きません。 FreeBSD4.11+Apache1.3.33で httpd.confファイルに直接書き込んで試しています。 LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c のどちらも書いてあるにもかかわらず、下記のテスト設定を試してみたらローカルIPからアクセス出来てしまいます。 RewriteEngine on RewriteCond %{REMOTE_ADDR} ^192\.168\.1\. ←ローカルネットワークのアドレス RewriteRule ^.*$ - [F] どのようにしたらいいですか? アドバイスお願い致します。

  • mod_rewriteについて

    初めて質問させていただきます。 よろしくお願いします。 Solaris8にてApacheを動かしています。 【問題】「HTTP TRACE」を拒否するためにmod_rewriteモジュールをインストールしようと思うのですがうまくいきません。 【詳細】mod_rewriteをインストールするとmod_soが消えてしまい、mod_soを入れなおすとmod_rewriteが消えてしまいます。  ./configure --enable-module=so --enable-module=rewrite とすると両方が入るみたいなんですが、 /usr/local/apache/bin/apachectl startssl としても、  Syntax error on line 206 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/libexec/libssl.so into server: ld.so.1: /usr/local/apache/bin/httpd: 重大なエラー: 再配置エラー: ファイル /usr/local/apache/libexec/libssl.so: シンボル ap_global_ctx: 参照シンボルが見つかりません。 /usr/local/apache/bin/apachectl startssl: httpd could not be started と、こんなエラーが出てhttpdがスタートできません。 どこに原因があるためのエラーなのでしょうか??

  • mod_rewriteを使えるようにするには?

    LinuxのOS Fedora Core4でサーバを立てています。 .htaccessでmod_rewriteを使用したいのですが、デフォルトでのApach2.054インストールでは使用できないようです。 使用するにはhttpd.confファイルの中に LoadModule rewrite_module modules/mod_rewrite.so と AddModule mod_rewrite.c の行が必要だそうですが、 AddModule mod_rewrite.cの行が見当たりません。 どうやってインストールできるでしょうか?

  • httpsでmod_rewriteができない

    はじめまして。 Linux環境で、apacheのhttp.confにmod_rewriteを記載し、httpsとhttpを切り替えたいと思っています。 httpd.confに以下のように記述しています。 <IfModule mod_rewrite.c> RewriteEngine on  #(1)httpで/aaaa/bbbbにアクセスされたときにhttps://~に変えたい RewriteCond %{REQUEST_URI} ^/aaaa/bbbb RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]  #(2)httpsで/cccc/ddddにアクセスされたときにhttp://~に変えたい RewriteCond %{REQUEST_URI} ^/cccc/dddd RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R] </IfModule> 上記(1)のhttpでのアクセス時には、mod_rewriteが効いてhttpsへ切り替えられるのですが、 上記(2)のhttpsでのアクセス時には、mod_rewriteが効いていないようでhttpへ切り替えられません。 rewriteログを見てみると、当サイトへhttpでアクセスした場合にはログが出力されますが、 httpsでアクセスした場合には出力されません。 そもそもhttpsでのアクセスの場合にhttpd.confのmod_rewriteが効いていないようです。 ですが、これに対しどこを調査すべきかが分かっていません。 SSLの設定自体は出来ていると思っていて、 https://xxxx.jpのようにアクセスするとちゃんとページが表示されます。 どの当たりに問題がありそうでしょうか? 解析のヒントを頂けたらと思います。 宜しくお願い致します。

  • mod_rewriteのRewriteMapについて

    初めて質問させていただきます。 mod_rewriteのRewriteMapの使い方について質問があります。 /etc/httpd/conf/httpd.conf に以下のように書きました。 <IfModule mod_rewrite.c> RewriteEngine on RewriteLog /etc/httpd/logs/rewrite_log RewriteLogLevel 2 RewriteMap userMap txt:/home/userMap/userMap.txt </IfModule> この状態で、Apache2を再起動すると、Apacheが起動する際に以下のエラーが出て起動できません。 -- httpd を起動中: Syntax error on line 1036 of /etc/httpd/conf/httpd.conf: RewriteMap: file for map userMap not found:/home/userMap/userMap.txt -- エラーメッセージは指定されたファイルがないと言うことだと思うのですが、指定した位置には確かにファイルがあることを確認しています。 ファイルの所有権や上位ディレクトリのパーミッションの関係なのかなと思って、いろいろ変えて試しているのですが、一向にうまくいきません。 RewriteMapのファイルを置く位置はどこがベストなのかとか、パーミッションや所有権などで気をつけるべきポイントなどを教えていただけると助かります。 よろしくお願いいたします。

  • apacheとサーバについて

    apacheとtomcat、サーバ接続についてくわしいかたお願いします。 環境: Windows vista Apache2.0.61 Tomcat5.5.25 で tomcatとapacheは単独でうごきますし、 mod_jkを使い、apacheとtomcatを連携させました。 その際のhttpd.confには以下を追記しました。 末尾 <IfModule mod_jk.c> JkWorkersFile "C:\Program Files\Apache Group\Apache2\conf\workers.properties" JkLogFile logs\mod_jk.log JkLogLevel warn JkMount /*.jsp worker1   →(1) JkMount /servlet/* worker1     →(2) JkMount /examples/* worker1    →(3) JkMount /tomcat-docs/* worker1   →(4) </IfModule> において(4)は自分で作成(追加)しhttp://localhost/tomcat-docs/でみることができました。 しかし(3)においてはexampleに対応するファイルがtomcatに入ってなかったため、見れないのはわかります。 ここで(1)ですがこれはjspファイルを見れるようにするという意味ですよね? ということは もし、自分で○×.jspというファイルをlocalhostで見たい場合は httpd.confに JkMount /○×/* worker1と追加すればみれるということでしょうか? 追記して確認したところwebページがみつかりませんとの表示があります。 また、localhostでなく外部から○×.jspに接続されることを考えた場合、http://localhost/○×.jsp/のlocalhostに自分のIPアドレスを入れてあげれば外部からもみることができますよね? 質問ばかり&拙い文章ですいません。 なお○×.jspは C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\rootsの直下に入っています。 httpd.confと、サーバ接続の編集があいまいになっています。

  • CGIの設置ができません。

    Apacheのhttpd.confを設定して、aska.cgiという掲示板を動かそうとしているのですが、うまく動きません。 色々調べた結果、httpd.conf内のOptionというところにExec CGIを追記すればいいとのことだったので、 <Directory "C:/Program Files/Apache Group/Apache2/htdocs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> としましたが、 Options ExecCGI is off in this directory: C:/Program Files/Apache Group/Apache2/htdocs/aska/aska.cgi, referer: http://localhost/aska/ とerror.logには表示されてしまいます。 ちなみにaska.cgiは C:/Program Files/Apache Group/Apache2/htdocs/aska/ に入っています。 よろしくお願いします

  • windowsのapacheのhttpd.conf

    windowsのapacheのhttpd.confの書き方についての質問です。 通常windows(私は7です)にapacheをインストールすると httpd.confには DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" と書かれていますが、前述の質問の回答で LINUXがOSの場合、スラッシュ→「?」は有効だが windowsがOSの場合バックスラッシュ→「\」に置き換えなければならない、 と私は解釈したのですが、 では、デフォルトの DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" でApacheが正常に稼働しているようなのですが、 これって/を使ってますよね? これって、windowsがOSの場合の\のルールに反しているのに、 localhostと入力すると、it worksのhtmlが参照されるのは何故なんでしょうか? そして これを"C:\www"とCドライブの直下に置くことが出来るみたいなんですが、 ドキュメントルートの変更で\を使っても私の環境下では DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" と同じで、この中のhtmlは読んでしまうのは何故なんでしょうか? 長文、駄文、失礼いたしました。 何分超初心者の身なので、詳しい方は「?何いってやがんだ…質問の趣旨がわからん」 と思われるかもしれませんが、拙い表現になってしまうのはお許しください。

  • apache環境におけるmod_perlのインストール

    apacheをwindows98 SEにいれて、perlを動かそうとしているのですが、うまく行きません。 成功しているかたがいらっしゃったら、方法を教えてください。 僕が試した詳細は以下の通りです。 1)ファイルをダウンロードし、dllをModuleの下にコピーをし、 C:\Program Files\Apache Group\Apache\modules\ApacheModulePerl.dll 2)httpd.confを LoadModule perl_module modules/ApacheModulePerl.dll を追加しました。 3)その後、apache コマンドを打つと、 Syntax error on line 184 of c:program files/apache group/apache/conf/httpd.conf: Cannot load c:/progrm files/aapche group/apache/modules/ApacheModulePerl.dll nto server: の様なエラーメッセージが表示されてしまい、起動しません。 #おそらくapacheを再コンパイルする必要があると思うのですが、方法がわかりません。自分でも調べている最中ですが、やられた方がいらっしゃったら教えてください。 以上、御願いします。

  • mod_rewriteでアドレスを書き換えたい

    mod_rewriteでアドレスを書き換えたい思っています。 xamppでテストしていますがうまくいきません。 mod_rewrite.soの#は外しています。(つまり、.htaccess以外の設定はできていると思います) 【やりたい事】 localhost/test/index.php?p=test を  ↓ localhost/test/i/test でアクセスしたいです。 【参考にした情報】 http://www.sample.com/cgi-bin/sample/sample.cgi?a=123&b=456 というURLを静的なアドレスでアクセスできるように以下のように設定します。 RewriteEngine on RewriteRule ^/cgi-bin/sample/([0-9A-Za-z]+)/([0-9A-Za-z)]+)\.html$ /cgi-bin/sample/sample.cgi?a=$1&b=$2 [L] を言うのを見つけました。 【試したこと】 .htaccessをつくり RewriteEngine on RewriteRule ^/test/i/([0-9A-Za-z)]+)$ /test/index.php?p=$1 [L] と記入 【結果】 Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 と表示されました。 ------------------------------------------------------------------ localhost/test/i/testでアクセスするには、.htaccessをどう書けばいいのでしょうか? 疑問1.xamppでlocalhostでmod_rewriteができるのだろうか? 疑問2.参考にした情報のRewriteRuleの"^"がわからない。正規表現の"^"とは文頭にマッチすると思います。この場合の文頭とは? よろしくお願いします。