質問: .htaccessを用いたリダイレクトの記述を教えてください。 1)~3)にアクセスがあった場合に、4)にリダイレクトさせてたいです。 ※2)3)のように、/sp/以降にパスが続く場合もリダイレクト対象に含めたいです。 ただし、ディレクトリspは存在しません。 ディレクトリspが必要であれば、ディレクトリspを作成することは問題ありません。 1) `http://example.com/sp/` 2) `http://example.com/sp/index.php` 3) `http://example.com/sp/2015/01.php` 4) `http://example.com`
回答: `http://example.com`でサイトを運用していることと思います。このルートディレクトリに.htaccessファイルを配置(つまり`http://example.com/.htaccess`となるように)します。`sp`ディレクトリは一般に必要ないと思われます。 (1)~(3)までを(4)にリダイレクトするならば、内容は ``` RewriteRule ^sp/(?:index\.php|2015/01\.php)?$ / [L,R=301] ``` などとします。また、質問の趣旨を取り違えていなければ、`/sp/`以下へのアクセスを禁止してサイトのトップページに戻す動作をさせたい、ということでしょう。この場合は正規表現を改め ``` RewriteRule ^sp/.*?$ / [L,R=301] ``` などとします。ここで、`R=301`はリダイレクトの種類を設定していますので、目的に合わせて301,302など適切に設定してください。 こうやって回答を書いてしまうとあまり勉強にならないと思うので、正規表現やmod_rewriteの使い方・動作については、いろいろ実験しながらご自分で勉強されることをおすすめします。