【htaccess】存在するディレクトリ・ファイル名をリダイレクト除外する方法

ポイントとなるのは、RewriteRule を「何もしない」の意味の「-」(ハイフン)にすること。これで存在するフォルダ・ファイルをリダイレクトの対象から外すことができます。

ざっくり言うと

説明

ポイントとなるのは、

RewriteRule の移動先にあたるところをハイフンだけにすることによって、何もしない、つまりリダイレクトの除外にすることができます。

また、RewriteCond で、Wordpress ではよく「存在するディレクトリ名・ファイル名であれば除外」という風にしていると思います。こんな風に。

しかし今回は、逆に存在していれば、という条件発動にしてリダイレクトの対象から外しています。

追記:Windows Server(IIS)の場合

Windows Server(IIS)の場合、受信規則を以下のように従って追加していきます。

  • URL の一致
    • 要求された URL: パターンに一致する
    • 使用: 正規表現
    • パターン: ^(.*)$
  • 条件
    • 論理グループ化: いずれかと一致
    • 条件 1: ファイルである
    • 条件 2: ディレクトリである
    • 条件間でキャプチャ グループを追跡する: いいえ
  • サーバー変数: とくに設定しない
  • アクション
    • アクションの種類: なし
    • 後続の規則の処理を停止する: はい

iis-noredirect-kisoku

 

ようやく分かった。なぜ CPI の FTP サーバーでたびたび切断させられるか

これまで、CPIのFTPサーバーでファイルをアップロードしようとすると、たびたび接続が切断されたりしていました。なぜかというと、5つ以上同時に接続すると切断される仕組みになっていたからです。

サーバーに接続を閉ざされてしまう。。。

これまで、CPI の FTP サーバーでファイルをアップロードしようとすると、たびたび接続が切断されたりしていました。

なぜそうなるか、実は CPI のヘルプに書かれていました・・・。

同一IPから5つ以上同時接続すると切断される

同一 IP から5つ以上アクセスしている場合
同一 IP からの FTP アクセスは最大5つまでです。同一拠点(企業様など)からの同時アクセス時などにはご注意ください。

サポート|よくある質問 FTP サーバーに接続できません。:レンタルサーバーなら【CPI】

そして自分のFTPの設定を確かめてみたら・・・

Transmit の設定。同時接続数が、6になっていました。

6接続になっていました。そりゃあ切断されてしまいます。

今は半分の3接続にしてなるべく切断されないようにしています。

【追記】今はSSHで接続することもできる

2016年2月25日追記

今では、CPIでFTP接続だけではなく、SSHで接続することもできます。この方法では5つ以上のアクセス制限を受けるかどうかは分かりませんが・・・現状不自由なくファイル転送することが出来ています。

これに関するヘルプ情報がこちらです。

SSH(鍵認証) | SSH(鍵認証) | Online Help for ControlPanel
http://acesr.document.secure.ne.jp/tools/sshkeys/

WWWの有無は統一した方が良い

WWW にするかしないかに関わらず、どちらかには統一した方がいいです。Apache、Windows Server、それぞれの記述方法を備忘録ついでにまとめてみました。

http-www

WWW にするかしないかに関わらず、どちらかには統一した方がいいです。
そして、仮に WWW(www.example.comとか)に統一したとしたら、WWW じゃないほう(example.comとか)にアクセスされたらちゃんとリダイレクトしてあげるべきだと思います。

これは特に調べたわけじゃありませんが、どちらでもアクセス可能になりますと SEO 的にも分散されちゃってよくないかと・・・

ということで、統一の仕方の備忘録です。

 

そして大半の方(レンタルサーバー含)が Apache だと思いますが、Windows Server (IIS) の場合も併記しておきます。

Apache

WWWありに統一する

※ www.example.com は自身のドメインに置き換えてください。

WWWなしに統一する

※ example.com は自身のドメインに置き換えてください。

Windows Server (IIS)

WWWありに統一する

※ (www.)example.com は自身のドメインに置き換えてください。
※ 既存の web.config がある場合、それと統合するような形で記述してください。

WWWなしに統一する

※ (www.)example.com は自身のドメインに置き換えてください。
※ 既存の web.config がある場合、それと統合するような形で記述してください。

プログラマ・WEBデザイナーのみなさんへアンケートです。是非ご協力を!

[poll id=”1″]

[poll id=”2″]

[poll id=”3″]

[poll id=”4″]

[poll id=”5″]

CPI サーバーで Internal Server Error になったらまず確認すること

まず最初に .htaccess に目に行きましたが、CPI のサーバーでは php.ini も一緒に直さないといけないということに、最初気付けませんでした…私的備忘録です。

1. .htaccessの記述に間違いがないかを確認する

何よりも第一。
記述をよく確かめたり、怪しい記述行をコメントアウトしたりなど・・・一般的に .htaccess を書き間違えていないかを確認する。

また、エラー起こる前の .htaccess があったら戻してみたり、
2つの .htaccess をテキスト比較ツール (difff.jp)などに貼り付けて何が違うか・どこの記述が間違っているかを確かめる。

2. 適切なPHPのバージョンになってるか?対応している php.ini をアップしているかを確かめよう

執筆時現在(2015年3月10日)、
.htaccess や php.ini をアップしないと既定で PHP 5.6 で動作するようになっている。

けれどそれだと困るアプリケーションもあるんだよな・・・
たとえば、

  • 古い WordPress
    PHP 5.6 × WordPress 3.6 の組み合わせで遭遇。管理画面が真っ白・・・
  • Research Artisan Lite
    PHP 5.4 で遭遇。管理画面の一部ページでエラーが吐き出されていました・・・

なので適切な PHP バージョン・php.ini を読み込ませる。

たとえば PHP 5.3.6 にしたい場合は CPI の公式ヘルプのうち項目3・4をする。
http://www.cpi.ad.jp/cms/wp/tips/ftp_install/

ほかの PHP バージョンにしたい場合は適宜読み替えて設定する。

そして重要なのが、PHP 5.5 未満の場合は php.ini の設定を忘れないこと!
(他のバージョンでも設定忘れちゃだめだけど、特に・・・)
そうしないと、Wordpress でテーマ・プラグイン編集中に真っ白になってしまうことがあるからな・・・

原因は、デフォルトのエンコーディングが EUC-JP になっているから、それを php.ini で UTF-8 にしなきゃいけないんだ・・・

追記:ひととおりZIPにして用意してみました

PHP 5.3、5.4、5.5の php.iniと.htaccessをZIPにして用意してみました。
http://www.ams.jp/staff_blog/wp-content/uploads/2015/04/CPI-Init-Files.zip

(2015年4月16日追記)

備忘録の後書き

初めてこのブログを執筆します西村と申します。
先月の下旬、これが原因でお客様のサイトをエラーにしてしまいました…

具体的にいうと、PHP 5.4 を動作させているのにも関わらず PHP 5.3 用の php.ini ファイルを読み込ませていたり、そういうことを知らずに PHP の読み込みバージョンを上げてみたり(5.3→5.4)…
これに気づくまでに完全復旧まで4〜5時間くらいを要してしまいました。

話は変わるのですが、僕自身はWeb系の専門学校を卒業してきました。
そのWeb担当の先生が言っていた愚痴を思い出しました。

「学校のサーバー EUC-JP 強いからな…この空間(ディレクトリ)を UTF-8 にしないといけない」

思い返せば学校のサーバーも CPI を使っていたのかな…なんて思いました。

最初の1記事目から専門的な記事になってしまいましたが。
Web ページを作る身として、まだまだ未熟なものではありますが、暖かく見守っていただければ幸いです。