お名前.comの共用サーバでRewriteRuleを使う方法
2015/07/15
以前メモした「日本語込みのURLをRewriteRuleで書き換える」というものを、お名前.comの共用サーバに入れたかった。VPSで動作確認したhtaccessファイルを共用サーバに入れても動かなかった。
まず、やりたい事と動かない書き方と動いた書き方をメモ。
■やりたい事
「http://hoge.com/あいうえお/」というURLを叩いた際に「http://hoge.com/index.php?param=あいうえお」を叩いたことにさせたい。
■動かない例(htaccess)
1 2 |
RewriteEngine On RewriteRule (.+)/$ index.php?param=$1 |
■動いた例(htaccess)
1 2 3 4 |
RewriteEngine On RewriteBase / RewriteCond $1 !^(\/|index\.php) RewriteRule ^(.*)$ index.php?param=$1 [QSA,L] |
※2015/07/15追記
RewriteBaseの設定の有無が原因っぽい。なので、短く書くなら以下の形でいける。
1 2 3 |
RewriteEngine On RewriteBase / RewriteRule (.+)/$ index.php?param=$1 |
ここからは経緯。何故動かないのか分からないのでググってみると、公式内のよくある質問に、「ファイル制御に関する記述は一部ご利用いただけません」という中に「RewriteEngine On」という例がある。
■該当ページ
http://help.onamae.com/app/answers/detail/a_id/9096
ただ、共用サーバでWordPressを入れているところがあり、そちらではパーマネントリンクを変更しており、「http://hoge.com/記事名/」という形で動いていたので、何らかの解決策はありそう。
さらに調べると若干似たようなケースで解決されているブログがあった。
■参考サイト
http://agilmente.com/blog/2013/02/12/seezoo_sd/
RewriteCondというのははじめて見た。RewriteRuleの条件を設定できるらしい。ただ、良くある質問ではRewriteRuleはhtaccessで使えないみたいに書いていて、原因がよく分からない。
反省点としてVPSで使えたから共用サーバでも大丈夫だろう、みたいな考えは危険というもの。お名前.comのサーバで物を作ることも多いので、レンタルサーバー&VPSのどっちもで検証の必要有り。
関連記事
-
-
htaccessでダイジェスト認証を行う方法
何かで調べ物をしていたときにdigest認証というものを見かけた。apacheの ...
-
-
htaccessでスマホ判別とCookie制御する方法
サイトを閲覧しているデバイスがスマホ且つ特定のCookieの値が入っているユーザ ...
-
-
日本語込みのURLをRewriteRuleで書き換える
※2015/07/15追記 こちらの記事の方がやりたい事は同じだけど、もっとスマ ...
-
-
htaccessについて
#正規表現いりそうなので後回しで覚える AuthName "php user" ...
-
-
どのページを開いても「メンテナンス中です」と表示させる方法
メンテナンスする際にどのページURLを叩いても「只今メンテナンス中です」と出した ...
-
-
PHPにて自動でファイルを呼び出す(auto_prepend_file)
設定ファイルとかをinclude('config.php')みたいに、 いちいち ...
-
-
海外IPの制限
海外IPの制限を行ったので手順のメモ。 まず「サーバー立てたらすぐ攻撃が来る」と ...
-
-
htaccessを置いてあるフォルダのファイルを参照
曖昧だけどhtaccessでベーシック認証とかIP制限かかってる フォルダ内のプ ...
-
-
日本語込みのURLをRewriteRuleで書き換える2
以前にメモをした「日本語込みのURLをRewriteRuleで書き換える」という ...
-
-
フォルダにリンク制限をかける
imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...