スポンサーサイト

  • 2018.01.18 Thursday

一定期間更新がないため広告を表示しています

  • 0
    • -
    • -
    • -

    htaccessの作り方 メモ

    • 2013.11.19 Tuesday
    • 15:27
    いつも忘れてしまうので。。色々メモやリンク
    ■作成
    http://htaccess.cman.jp/attention/

    ■トップページ(index.html)へリダイレクト
    http://highmoon-miyabi.main.jp/blog/2013/05/31_000347.html
    ----------------------------------------------------
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_URI} !^/index.html$   ←自分自身は除外(これがないとループ!!)
    RewriteRule ^(.*)$ /index.html [L,R]
    ----------------------------------------------------


    ■特定のディレクトリ以外をリダイレクト
    http://bitter-development.blogspot.jp/2007/05/htaccess.html
    ----------------------------------------------------
    RewriteEngine on
    # 特定フォルダをリダイレクト除外
    RewriteCond %{REQUEST_URI} !^/phpMyAdmin/*.*$
    RewriteCond %{REQUEST_URI} !^/amfPHP/*.*$
    # フロントコントローラー起動ファイル
    RewriteRule !¥.(icogifjpgpngcss)$ index.php
    ----------------------------------------------------
    http://www.kaden1000.com/2012/11/fc2-28/
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} !(^/ex/)
    RewriteRule ^$ http://www.new.com/ [R=301,L]

    カッコがつているもの
    ついていないものの違いはない?!


    ■オプションなど
    http://blog.aidream.jp/htaccess/htaccess-rewrite-site-transfer-www-access-restriction-323.html
    http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/
    http://design.kayac.com/topics/2010/09/mobile-template.php
    ディレクティブ(指示・命令を与える文)
    ディレクティブと書式 初期値 説明
    RewriteEngine on/off off 書き換えの可否を設定。
    RewriteOptions inherit - inherit : 現在の設定値を親ディレクトリの設定値から強制的に継承する。
    RewriteBase / / 書き換えのベースとなるパス(ベースが明白な場合は不要)。
    RewriteCond テスト文字列 条件 パターン - 条件による、テスト文字列とパターンの比較。
    RewriteRule パターン 置換対象 - 置換対象をパターンで書き換える。

    オプション

    [R] 強制的にリダイレクト (Redirect) する。 
    [R=301] : 永久的に移動。HTTP レスポンスの「301 : Moved Permanently」を返す。
    [R=302] : 一時的な移動。HTTP レスポンスの「302 : Moved Temporarily」を返す。デフォルト。
    [F] 強制的に、アクセス禁止 (Forbidden) にする。
    HTTP レスポンスの「403 : Forbidden」を返す。
    [G] 強制的に消去済み (Gone) にする。 

    HTTP レスポンスの「410 : Gone」を返す。
    もはや存在しないページを消去済みとしてマークする。

    [L] 書き換えが行われたら終了 (Last) にする。 

    今、書き換えた URL が、後に続くルール によって、これ以上書き換えられることがないようにする。

    [NC] パターンについて、文字の大小を区別しない(No Case)。
    「A-Z」と 「a-z」 を区別しない。
    [OR] または。

    正規表現

    文字 説明
    ! 否定。
    . 任意の1文字。
    [ ] 括弧内のいずれかの文字。
    [^ ] 括弧内のいずれかの文字以外。
    | または。
    ? 直前の文字の0回または1回の繰り返し
    * 直前の文字の0回以上の繰り返し。
    + 直前の文字の1回以上の繰り返し。
    ( ) 選択範囲の境界を明示する、もしくは後方参照を作成する。
    ^ 行頭。
    $ 行末。
    $n (0 <= n <= 9) 後方参照。 n番目の( )内の値が入る。
    %{ } サーバ変数の取得。
    ¥ (日本語環境では円マーク)正規表現の特殊文字をエスケープする。
    サーバ変数 内容
    HTTP_USER_AGENT ブラウザの種類とバージョン。
    HTTP_REFERER 参照元の URL 。
    HTTP_COOKIE 設定されているクッキー情報。
    HTTP_FORWARDED プロキシサーバ情報。
    HTTP_HOST 接続要求しているホスト名。
    HTTP_PROXY_CONNECTION 接続先プロキシサーバとの接続状態。
    HTTP_ACCEPT ブラウザが認識可能なデータ形式。
    DOCUMENT_ROOT サイトのルートディレクトリ。
    SERVER_ADMIN サーバ管理者のメールアドレス情報。
    SERVER_NAME サーバのホスト名、ドメイン名、またはIPアドレス情報。
    SERVER_ADDR サーバのIPアドレス。
    SERVER_PORT 送信に使われたサーバのポート番号。
    SERVER_PROTOCOL 送信に使われたプロトコルの名前とレビジョン情報。
    SERVER_SOFTWARE 起動したサーバソフトウエアの名前とバージョン情報。
    REMOTE_ADDR リモートホストのIPアドレス情報。
    REMOTE_HOST リモートホストのドメイン名。
    REMOTE_USER ユーザの認証名。
    REMOTE_IDENT リモートホストのユーザ名。
    REQUEST_METHOD リクエストを送信した方法。
    REQUEST_URI リクエストされたURI。
    SCRIPT_FILENAME 現在実行しているスクリプト名。
    PATH_INFO クライアントから送られるパス情報。
    QUERY_STRING URL に付加して渡された “?” 以降の文字列。
    AUTH_TYPE ユーザを認証するときに使用する認証方法。
    TIME_YEAR サーバのシステム日付・年
    TIME_MON サーバのシステム日付・月
    TIME_DAY サーバのシステム日付・日
    TIME_HOUR サーバのシステム日付・時
    TIME_MIN サーバのシステム日付・分
    TIME_SEC サーバのシステム日付・秒
    TIME_WDAY サーバのシステム日付・曜日
    TIME サーバのシステム日付・UNIXタイムスタンプ


    ■リダイレクトなどで画像やcssがおかしくなった時
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    を追加で書いてみる
    これは駄目!




    RewriteCond %{REQUEST_URI} !^/index.html$ [NC]
    RewriteCond %{REQUEST_URI} !^/collection/ [NC]
    RewriteCond %{REQUEST_URI} !^(.*¥.(jpg|gif|png|jpeg|css|js))$ [NC] ←※※※
    RewriteRule ^(.*)$ /index.html [L,R]
    このように画像やcss、jsはリダイレクトさせないようにすることで解決
    これがないと画像等が開かない。。




    REQUEST_URIとREQUEST_FILENAMEの違い
    REQUEST_URI
    HTTP リクエスト行でリクエストされたリソース (上記の例では "/index.html" がそれにあたります)。
    REQUEST_FILENAME
    リクエストにマッチしたファイルまたはスクリプトの、 完全なローカルファイルシステムのパス。

    質問内容に合わせると
    REQUEST_URI
    /file/test.jpg
    REQUEST_FILENAME
    ファイルシステム内のフルパスなので、例になるが
    /var/www/htdocs/file/test.jpg


    ■設定例

    http://coliss.com/articles/build-websites/operations/926.html

    http://support.sakura.ad.jp/manual/rs/web/mod_rewrite.html

    ■■携帯振り分け

    # 携帯は拒否
    RewriteCond %{HTTP_USER_AGENT} (DoCoMo|SoftBank|vodafone|J-PHONE|UP.Browser|KDDI) [NC] 
    RewriteCond %{REQUEST_URI} !^/403.php
    RewriteRule . /403.php [L]

    ■■スマフォ振り分け

     

    ■docomoでCSSを使う

    Content-Typeをxmlに変換しないとdocomoでCSSが適用されません。
    下記のいずれかの方法になりますが、.htaccessはファイルを置くだけなので簡単です。

    .htaccessでAddTypeする

    なんだか難しそうに聞こえますが、メモ帳などで以下の1行を記述したファイルを作成し、
    ファイル名を「.htaccess」に変更したものを、ルートフォルダに置くだけです。簡単!

    ----------------------------------------------------
    AddType application/xhtml+xml .html
    ----------------------------------------------------
    
    
    

    スポンサーサイト

    • 2018.01.18 Thursday
    • 15:27
    • 0
      • -
      • -
      • -
      コメント
      コメントする








          
      この記事のトラックバックURL
      トラックバック

      PR

      calendar

      S M T W T F S
         1234
      567891011
      12131415161718
      19202122232425
      262728293031 
      << May 2019 >>

      selected entries

      categories

      archives

      links

      profile

      search this site.

      others

      mobile

      qrcode

      powered

      無料ブログ作成サービス JUGEM