mod_rewrite使えばいいじゃん。・・・あれ、動かんwwwwwでかーっとなって書いたメモ
さくらvpsのDocumentRootに設定しているディレクトリに.htaccess置いてどのURLでアクセスされてもindex.php経由する設定をしようとしたけど、うまく動かなかった時のメモ。
注意点1
.htaccessのパーミッションを604に変更する
注意点2
.htaccessが動いていなかった原因 → AllowOverride None になっていたから
virtualHostの該当部分を以下のように設定すること
<VirtualHost *:80> ServerName sample.com DocumentRoot /var/www/html/sample.com <Directory /var/www/html/sample.com> AllowOverride All Options FollowSymLinks </Directory> </VirtualHost>
注意点3
デフォルト設定は上位ディレクトリの設定を引き継ぐ
上の例だと以下のように「AllowOverride None」となっていたため、 .htaccessが効かない設定になっていた
<Directory "/var/www/html">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
注意点4
「Options FollowSymLinks」ってなんだっけ。忘れたwwww
これはシンボリックリンクを許可する設定。たとえばsample.comフォルダの下に別ディレクトリへのリンクを貼って、この設定がされているとURLから別ディレクトリへアクセスが可能となる。逆に以下のように-をつければ設定を打ち消す事が可能。
<Directory /var/www/html/sample.com> Options -FollowSymLinks </Directory>
注意点5
mod_rewriteを使いたくば、Options FollowSymLinks を有効にせなあかん。
注意点6
さくらサーバーだと例えば ttp://sample.com/list にアクセスした場合、そのディレクトリ内にlist.htmlやらlist.phpがあると勝手にアクセス先をlist.htmlやらlist.phpに書き換えてしまうらしい。通常は便利なんだろうが、今回これのせいでうまく動かなかったので、注意すること。
今回設定した.htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteBase / RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
今日も1000円通貨からのFXに励もう。