web-dev-qa-db-ja.com

htaccessはindex.phpをルート(サブドメインを含む)にリダイレクトします

私はindex.phpファイルをルート/にリダイレクトしようとしています、私は周りを検索して、次のようなコードのいくつかのスニペットを見つけました:

RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule ^(.*)index.php$ http://www.domain.com/$1 [R=301,L] 

ただし、これはサブドメインでは機能しません。以下に例を示します。

  1. サブドメインがあります:subdomain.domain.com
  2. ユーザーがアクセス http://subdomain.domain.com/index.php
  3. 上記のhtaccessを使用すると、 http://subdomain.domain.com/ ではなく http://www.domain.com/ にリダイレクトされます。

上記のhtaccessを調整してサブドメインを考慮して適切な場所にリダイレクトする方法を知っている人はいますか?

例えばユーザーが http://subdomain.domain.com/index.php にアクセスした場合、ユーザーは http://subdomain.domain.com/ にアクセスします

ボーナスポイント:

このルールをすべてのフォルダーに適用できるhtaccessはありますか?

そのため、index.phpを持つフォルダーの場合、ルートにリダイレクトされます(例: http://subdomain.domain.com/folder1/folder2/index.php は自動的に移動します http://subdomain.domain.com/folder1/folder2/

29
Alex

これを行う:

RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L] 
76
ThinkingMonkey

@ ThinkingMonkey's answer に基づいて次のコードを作成しました

RewriteRule ^(.*)index\.(php|html?)$ /$1 [R=301,NC,L]

index.phpindex.htmまたはindex.htmlで終わるURIを/にリダイレクトします。サブディレクトリでも動作します。

また、NCフラグにも注意してください。大文字と小文字を区別しません。そのため、URIがINDEX.PHPのように大文字であっても機能します。

12
caiosm1005