スポンサードリンク

【mod_rewrite】「httpd.conf」での設定方法

ApacheのモジュールであるURL書き換えエンジン mod_rewriteは、「httpd.conf」または「.htaccess」で設定できます。

ここでは、「httpd.conf」での設定方法を紹介します。

スポンサードリンク

mod_rewriteが使用可能か確認

まず、mod_rewriteが許可されているか確認します。

[○○○@vweb2 ~]# vi /etc/httpd/conf/httpd.conf

上のコマンドを実行して以下の記述がある、かつコメントアウトされていないか確認してください。

LoadModule rewrite_module modules/mod_rewrite.so

先頭に「#」があればコメントアウトされていますので、それを削除します。ない場合は追加します(mod_rewriteをインストールしていない場合はインストールする)。

修正した場合は、以下のようにhttpdを再起動します。

[○○○@vweb2 ~]# /etc/rc.d/init.d/httpd restart

httpd.confの編集

環境・条件

環境・条件を整理しておきます。

  • 「○○○.com」を以下のようにバーチャルホストしている
    <VirtualHost *:80>
    DocumentRoot /var/www/html/○○○
    ServerName ○○○.com
    ServerAlias www.○○○.com
    <Directory "/var/www/html/○○○">
    AllowOverride All
    </Directory>
    </VirtualHost>

このとき、「http://○○○.com/abc/index.html」でアクセスがあった場合、「http://○○○.com/abc/index2.html」にリダイレクトさせたいと思います。

編集

バーチャルホストの設定を「httpd.conf」に記述している場合は①、「vhost.conf」に記述している場合は②のコマンドを実行します。

[○○○@vweb2 ~]# vi /etc/httpd/conf/httpd.conf ・・・①

[○○○@vweb2 ~]# vi /etc/httpd/conf.d/vhost.conf ・・・②

編集モードにして、次のように記述を追加します。

<VirtualHost *:80>
DocumentRoot /var/www/html/○○○
ServerName ○○○.com
ServerAlias www.○○○.com
RewriteEngine On
RewriteRule ^/abc/index\.html$ /abc/index2.html [R,L]
<Directory "/var/www/html/○○○">
AllowOverride All
</Directory>
</VirtualHost>

そしてhttpdを再起動します。

[○○○@vweb2 ~]# /etc/rc.d/init.d/httpd restart

これで、「http://○○○.com/abc/index.html」のアクセスがあった場合、「http://○○○.com/abc/index2.html」にリダイレクトされます。

挙動

簡単に挙動を書くと、「http://○○○.com/abc/index.html」でアクセスがあった場合、RewriteRuleには「/abc/index.html」が渡ります(「/」が先頭につく、この詳細は「.htaccess」と「httpd.conf」での設定による違いを参照)。

そしてパターンマッチが成功し、「/abc/index2.html」にURLが書き換えられ、リダイレクトされます。

RewriteBaseを記述する場合の注意点

RewriteBaseを使用する場合、次のように記述し

<VirtualHost *:80>
DocumentRoot /var/www/html/○○○
ServerName ○○○.com
ServerAlias www.○○○.com
RewriteEngine On
RewriteBase /abc
RewriteRule ^/abc/index\.html$ index2.html [R,L]
<Directory "/var/www/html/○○○">
AllowOverride All
</Directory>
</VirtualHost>

httpdを再起動させようとすると、次のようなエラーがでて再起動ができません。

Starting httpd: Syntax error on line 1013 of /etc/httpd/conf/httpd.conf:
RewriteBase: only valid in per-directory config files

これは、エラーにあるようにRewriteBaseは「ディレクトリ毎の設定ファイルでのみ有効」となります。

すなわち次のように、Directoryセクションにmod_rewriteを記述しなければなりません。

<VirtualHost *:80>
DocumentRoot /var/www/html/○○○
ServerName ○○○.com
ServerAlias www.○○○.com
<Directory "/var/www/html/○○○">
AllowOverride All
RewriteEngine On
RewriteBase /abc
RewriteRule ^abc/index\.html$ index2.html [R,L]
</Directory>
</VirtualHost>

なお、この場合、Directoryセクションにmod_rewriteを記述しているので、RewriteRuleにわたってくるURLは「/abc/index.html」ではなく、「abc/index.html」となります(先頭に「/」は付かない)。

コメント

1:MichaelZes:2017/03/08 22:55:33

<b> สมัครสมาชิก SBOBET แจ้งโอนเงิน SBOBET </b>
บริการดีมากครับ พนักงานพูดสุภาพมากๆ ประทับใจมากครับ ไม่เคยคิดจะเปลี่ยนเว็ปเลย มีปัญหาโทรได้ตลอด 24 ชั่วโมง ใช้บริการกับ sbobet7x มาได้สักพัก ไม่มีปัญหาอะไร โปรโมชั่นก็ได้จริง ขอบคุณมากครับ บริการดีครับ ทำรายการอะไรต่าง ๆ ก็รวดเร็ว ขอให้บริการดี ๆ แบบนี้ตลอดไปนะครับ
<b> วันนี้ สี่เซียน</b>
ประทับใจการฝากถอน บริการได้เร็วดี แม้จะเป็นช่วงเย็นๆ เห็นบอกว่าคนทำรายการเยอะก็ยังรอไม่เกิน 5 นาทีใช้บริการออนไลน์ผ่านหน้าเว็บไซต์ ทั้ง สมัครสมาชิก ฝากเงิน ถอนเงิน สะดวกดี ดีตรงไม่ต้องพูดคุยกับคน ผมชอบมาก มาสมัครแรกๆ ตอนแรกนึกว่าบบริการไม่ดี ไปไงไปมาบริการดีโครตครับ สอนผมตั้งแต่เล่นไม่เป็นและแทงบอลได้จนรวยทุกวันนี้
<b>ผลบอลสดยูโรป้าลีก</b> อัพเดตผลบอลสดๆ ทันเวลาทุกวัน ทุกลีก ไม่ต้องรอนานเหมือนเว็บอื่น มาตรฐานสากล
ดูบอลสด ดูบอลออนไลน์ ดูบอล warp football ลิ้งดูบอล warpfootball บอลสด บอลออนไลน์ ลิงค์ดูบอล ดบอลสด ดูบอลสด youtube ดูบอล ออนไลน์ ดูบอลออนไลน์ cth ดูฟุตบอลออนไลน์ ดูบอลออนไล preview football ลิ้งดูบอลสด ฟุตบอลออนไลน์ wrap football ลิ้งค์ดูบอลสด วาปฟุตบอล link ดูบอล ดูฟุตบอลสด ดูบอลผ่านเน็ต ถ่ายทอดสด ถ่ายทอดสดบอล ดูบอลสดออนไลน์ เว็บดูบอล ดูบอลสด วันนี้ ดูบอลออนไลน์ hd ดูบอลสด youtube มือถือ fดูบอลสด ดูบอลไทย วาร์ปฟุตบอล ดูบอลออนไลน์ฟรี ถ่ายทอดสดฟุตบอล วาปบอล ลิงดูบอล ดู บอล สด ดูบอล cth ดูบอลสด cth ลิ้งค์ดูบอล wap football fดูบอลออนไลน์
<b>youtube</b>

コメントフォーム
お名前
コメント