さくらの共用サーバでURLに最後のスラッシュ / なしでsymfonyを使いたい、そんなとき

URLに最後のスラッシュ / ありの場合だけで良かったらシンボリックリンクをはるだけです。

例えば、自分のディレクトリが /home/foobar だった場合、ホームページのディレクトリは /home/foo/www/htdocs になります。

また、URLは http://foo.co.jp/ だったとします。

このとき、symfonyプロジェクトが /home/foobar/mysymfony にあったとすれば、

cd /home/foobar/www/htdocs
ln -s /home/foobar/mysymfony/web bar

こうすることで、symfonyプロジェクトに  http://foo.co.jp/bar/ というURLでアクセスできるようになります。

ところが、http://fooco.jp/bar でアクセスすると HTTPのBadRequest がブラウザに表示されてしまいます。

そんなとき

ずばり原因は symfony標準の.htaccess にあります。もちろん、他のサーバ(あるいは他の設定)でしたら symfony標準の.htaccess できちんと動きます。たまたま相性が悪かったということです。

変更ファイルは /home/foobar/mysymfony/web/.htaccess で、変更のポイントは2つ。
変更前。

  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  # RewriteBase /

変更後。

  RewriteEngine on
  RewriteBase /
  RewriteRule bar /bar/ [R,L]

  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  # RewriteBase /
  RewriteBase /bar

これで http://foo.co.jp/bar/ でも、 http://foo.co.jp/bar でも、symfonyプロジェクトにアクセスできるようになります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>