Apacheの設定でURLリダイレクトを行う方法

このQ&Aのポイント
  • dnsの設定で192.168.0.15<=>www.hoge.barという適当な割り当てを行い、Apache上にpukiwikiをダウンロードしてアクセスできるように設定しました。
  • URLをすべて入力するのが面倒なので、ttp://192.168.0.15にアクセスするとttp://192.168.015/pukiwikiにリダイレクトする設定を/etc/apache2/site-available/defaultに書きました。
  • ただし、ttp://www.hoge.barにアクセスするとttp://192.168.0.15/pukiwikiになってしまう問題があります。リダイレクトしたいURLに応じて適切なリダイレクト設定を行うことができますか?
回答を見る
  • ベストアンサー

apacheの設定

dnsの設定で192.168.0.15<=>www.hoge.barという適当な割り当てを行っています. また,apache上にpukiwikiをダウンロードしてttp://192.168.015/pukiwikiでアクセスできるようになっています. URLをすべて入力すると面倒くさいので,ttp://192.168.0.15とアクセスするとttp://192.168.015/pukiwikiにリダイレクトしてくれる設定を/etc/apache2/site-available/defaultに書きました. <Directory /> Options FollowSymLinks AllowOverride None RedirectMatch ^/index.html$ ttp://192.168.0.15/pukiwiki </Directory> ですが,このままだとttp://www.hoge.barにアクセスするとttp://192.168.0.15/pukiwikiになってしまいます. ttp://www.hoge.baならば,ttp://www.hoge.ba/pukiwiki ttp://192.168.0.15ならば,ttp://192.168.0.15/pukiwiki とリダイレクトしたいのですが,可能でしょうか? よろしくおねがいします.

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

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.3

RedirectMatch ^/index.html$ /pukiwiki でよいのではないでしょうか。 Redirect ディレクティブの説明に 新しい URL は絶対 URL 、つまりスキームとホスト名で 始まるものであるべきですが、URL-path の、スラッシュで始まるものも 使用可能です。その場合は、現在のスキームとホスト名が追加されたことに なります。 とあります。

参考URL:
http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect

その他の回答 (2)

noname#259146
noname#259146
回答No.2

>いままでttp://192.168.015/pukiwiki(ttp://www.hoge.ba/pukiwiki)とアクセ スしてた人はどのようにttp://192.168.015/(ttp://www.hoge.ba/)にリダイレ クトしたらよいのでしょうか? 上記補足への私なりの方法ですMS-WindowsOSではOSにより出来ると思います。 /pukiwiki内に/pukiwikiディレクトリーを作りシンボルリンクで同じファイル構成を作る またはAlias /pukiwiki /

noname#259146
noname#259146
回答No.1

ご要望のリダイレクトの設定の回答ではありませんが DocumentRootを/pukiwikiにするのはどうでしょうか?

Oforest
質問者

補足

documentrootを/var/www/pukiwikiにしたらアクセスは万事解決なんですが, いままでttp://192.168.015/pukiwiki(ttp://www.hoge.ba/pukiwiki)とアクセスしてた人はどのようにttp://192.168.015/(ttp://www.hoge.ba/)にリダイレクトしたらよいのでしょうか?

関連するQ&A

  • ApacheのAllowOverrideの設定について

    すいません、Apacheでサーバを立てているんですが、 htdocsにAllowOverrideの設定をしようとした所、 ----------------------------------------- <Directory /> Options FollowSymLinks AllowOverride None </Directory> ----------------------------------------- と ----------------------------------------- # This controls which options the .htaccess files in directories can # override. Can also be "All", or any combination of "Options", "FileInfo", # "AuthConfig", and "Limit" # AllowOverride None ----------------------------------------- と二つ設定する所があったんですが、どちらを弄れば良いんでしょうか? また、これらの2つはどちらを設定するかで、何か変わってくるのでしょうか? できれば、その違いも、詳しく教えていただけませんか?

  • Debian sarge apache2

    /var/wwwの下に作成したindex.htmlを置いても、 http://xxx.xxxx.xx.xx/apache2-default/のテスト画面をWEB公開したままです。設定が下記になっているからだと思いますが、通常は、どの設定をどのように直すことになりますか? /etc/apache2/sites-available# cat default ・ ・ ・ ・ ・ ・ ・ DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place RedirectMatch ^/$ /apache2-default/ </Directory> ・ ・ ・ ・ ・ ・ ・

  • apache2.2の設定について

    あるディレクトリでsite_available中のファイルの設定が <Directory /var/hogehoge> Options ExecCGI -FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> となっているのですが、現在このhogehoge中のディレクトリでimageというディレクトリに置かれたgifファイル(すなわちvar/hogehoge/image/○○○.gif)をcgiとして認識されています。 これを回避するためにimage以下の場合はcgiではなくgifで認識させるようにしたいのですが、どうすればよいのでしょうか? apacheはdebian系のapache2.2系です。 宜しくお願い致します。

  • apacheのバーチャルホスト設定について

    apacheのバーチャルホストを次のように2つ設定しました。 <VirtualHost *:80> ServerAdmin admin@hogehoge.co.jp DocumentRoot /www/hogehoge ServerName hogehoge.co.jp </VirtualHost> <VirtualHost *:80> ServerAdmin admin@umauma.co.jp DocumentRoot /www/umauma ServerName hogehoge.co.jp </VirtualHost> 上記でそれぞれ http://hogehoge.co.jp/ http://umauma.co.jp/ にアクセスできるようになりました。 そこで、それぞれにサブディレクトリ http://hogehoge.co.jp/web1/ http://umauma.co.jp/web2/ を持たせたいのですが次のようにaliasはどのように設定したらいいのでしょうか? ・hogehoge.co.jpに対する設定 (ttp://hogehoge.co.jp/web1/にアクセスできました) Alias /web1 "/www/hogehoge/web1" <Directory "/www/hogehoge/web1"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> ・umauma.co.jpに対する設定?(これはダメでした) Alias umauma/web2 "/www/umauma/web2" <Directory "/www/umauma/web2"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> このケースはどのように設定するべきでしょうか。

  • apache2.2 の設定に関して

    過去ににはlinux で apache1.3x の頃だと思いますが、apache の設定を行ったことがあります。 今回さくらインターネットと契約して、各種サーバの設定をコンソール上から行うことになりました。OS が FreeBSD (バージョンは未確認、確認方法が不明な為)ですが、apche の基本的設定は同じだと理解しました。 apache のバージョンが、2.2 になっていますが、基本的設定は httpd.conf で良いことは調べて確認しました。 現状(契約した後)では、取得した独自ドメインで確認ページを見れることは確認しています。 http://www.hogehoge.jp/ 独自ドメインでのアクセスは OK でした。 httpd.conf を確認して、DocumentRoot "/home/htdocs" も確認しました。 次に個々のユーザが、public_html でホームページを公開出来るように、httpd.conf に以下の情報を追加しました。 <Directory "/home/*/public_html"> Options FollowSymLinks ExecCGI Includes AllowOverride All Order allow,deny Allow from all </Directory> と記載して、apache を再起動させ、 http://www.hogehoge.jp/~hoge/index.html にアクセスすると。 Not Found The requested URL /~hoge/index.html was not found on this server. と出ます。 httpd.conf には他には何も追記していません。他にも何処か設定する項目が有るのでしょうか、アドバイスを頂ければ幸いです。 ユーザ hoge は、ディレクトリ public_html を作成して、index.html は置いてあります。 # hogehoge.jp は架空のドメインで、取得したドメインではありません。

  • cgi-binにアクセスできない

    apache初心者です。 Turbolinux6.0+apache1.3.12でHTTPサーバを試しているのですが、 cgi-binにあるファイルを見ようとするとHTTP 403エラーが出て表示できません。 属性とグループを色々変えてみたんですが、だめでした。 access.confで関係ありそうな所は <Directory /> Options None AllowOverride None order allow,deny allow from all </Directory> <Directory /home/httpd/html> Options Indexes Includes FollowSymLinks AllowOverride None order allow,deny allow from all </Directory> <Directory /home/httpd/cgi-bin> AllowOverride None Options FollowSymlinks ExecCGI order allow,deny allow from all </Directory> としていますが、なぜcgi-binの中身が見えないのかわかりません。 よろしくおねがいします。

  • Apache2の設定について。

    Solaris10にてApache2.0.52使っていて、ユーザルート上でCGIの許可をしているのにユーザルート上のCGIにアクセスしようとすると403エラーが発生してしまいます。 CGI-BIN以外の場所でCGIを使おうとする場合はエイリアスも設定しないといけないのでしょうか? 下に設定箇所も載せておきますので、確認よろしくおねがいします。 # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. <Directory /export/home/*/public_html> AllowOverride None Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order deny,allow Allow from 192.168.80.0/24 Deny from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory>

  • apache(.htaccess)の設定

    pukiwikiを使っていろいろ遊んでいるのですが,apacheの設定で困ったので教えてください. apacheサーバのIPアドレスは192.168.0.10で,pukiwikiは/var/wwwにあります. 理想はhttp://192.168.0.10とアクセスすると,http://192.168.0.10/pukiwikiと表示させたいです. apacheの設定で, DocumentRoot /var/www/pukiwiki としたのですが,http://192.168.0.10でpukiwikiのページが表示されましたが.http://192.168.0.10/pukiwikiではエラーでした. なお,apacheのログをみるとpukiwiki/pukiwikiは無いといった内容でした. /var/wwwに.htaccessを設置してみたのですができませんでした. .htaccess(パーミッション666) Redirect permanent /var/www/ /var/www/pukiwiki/ よろしくお願いします.

  • apache,ssl,virtualhost

    VPS上にいくつかのサブドメインでバーチャルホスト(名前ベース)を運用しています。 実現したいのは以下の設定です。  ブラウザに入力されたURL => リダイレクト先 (1)http://hoge.net => https://hoge.net (2)http://www.hoge.net => https://hoge.net (3)https://www.hoge.net => https://hoge.net SSL証明書が有効なのは、『hoge.net』と『hige.hoge.net』です。『www.hoge.net』は有効ではありません。 wwwについては、あっても無くてもアクセス可能とし、あった場合はリダイレクト(いわゆる無しで統一)したいので、設定してあります。 (1)と(2)は問題ないのですが、ブラウザに(3)を入力するとセキュリティの警告エラーが出てしまいます。 その警告を無視して進むとリダイレクトされて、正常に表示されます。 SSL証明書の追加取得以外で、この警告を回避してリダイレクトする方法を教えていただきたいです。 環境:apache2.2 設定内容:httpd.confではなくvhost.confファイルに下記を記述。(見易いように、先頭空白を全角に変更してあります。) <Directory /var/www/html/*/public_html>   Options FollowSymLinks   AllowOverride All   Order allow,deny   Allow from all </Directory> <VirtualHost *:80>   ServerName hoge.net   Redirect permanent / https://hoge.net </VirtualHost> <VirtualHost *:443>   ServerName hoge.net   DocumentRoot /var/www/html/hoge/public_html   SSLEngine on   SSLCertificateFile ++++++++++++++++   SSLCertificateKeyFile ++++++++++++++++ </VirtualHost> <VirtualHost *:80 *:443>   ServerName hige.hoge.net   DocumentRoot /var/www/html/hige/public_html   RewriteEngine on   RewriteCond %{HTTPS} off   RewriteRule . https://hige.hoge.net%{REQUEST_URI} [R=301,L]   SSLEngine on   SSLCertificateFile ++++++++++++++++   SSLCertificateKeyFile ++++++++++++++++ </VirtualHost> よろしくお願いいたします。

  • Apache2で仮想ディレクトリ(alias)の設定について

    お世話になります。 下記の環境で社内WEBサーバを構築しています。 OS:CentOS4.4 httpd:Apache2.0.61 httpd.confの内容 ServerRoot "/usr/local/apache" User apache Group apache DocumentRoot "/usr/local/apache/htdocs" <Directory "/usr/local/apache/htdocs"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> Alias /icons/ "/usr/local/apache/icons/" <Directory "/usr/local/apache/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> Alias /info/ "/home/info/" <Directory "/home/info"> AllowOverride None Order allow,deny Allow from all </Directory> 上記のようなhttpd.confを書いて、 "/home/info/"以下のファイルに"www.example.co.jp/info/"で アクセスしたいと考えています。 しかしブラウザから確認をすると、 You don't have permission to access /info/index.htm on this server. Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. のエラーが表示されます。(当然、希望するページは表示されません) 実際のディレクトリのパーミッションも確認しましたが、設定されているように思えます。(私の知識不足、誤認識であれば指摘ください。) drwxr-xr-x 6 root root /home drwxrw-r-x 2 info apache /home/info "/home/info"には766・755・744のどれをあてても同じ結果です。 また、"/home/info"以下のファイル"index.htm"は存在を確認し、 パーミッションも下記のように確認しています。 -rwxr-xr-x 1 root root index.htm ファイルの所有者・グループは"root"になっていますが、これはテスト的に作成したもので、実際の運用は"info"ユーザで作成されます。 httpd.confやパーミッションの設定で間違っているところがあれば ご指摘をおねがいいたします。 また情報が不足していましたら、補足に載せますのでご指摘をお願いします。