web-dev-qa-db-ja.com

Mod_Rewriteを使用してROOTを別のパスに書き換えます

注:この質問 の下で提案を試しましたが、機能しないか、無限のリダイレクトループエラーが発生します。

.htaccessファイルに次のものがあります。

<IfModule mod_rewrite.c>

    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /

    # Rewrite old links to new
    Redirect 301 /howitworks.php        /how-it-works
    Redirect 301 /testimonials.php      /testimonials
    Redirect 301 /contact_us.php        /customer-service
    Redirect 301 /affiliates.php        /affiliates
    Redirect 301 /account.php           /customer/account
    Redirect 301 /shopping_cart.php     /checkout/cart
    Redirect 301 /products.php          /starter-kits
    Redirect 301 /login.php             /customer/account/login

    # Force to Admin if trying to access admin
    RewriteCond %{HTTP_Host} www\.example\.com [NC]
    RewriteCond %{REQUEST_URI} admin [NC]
    RewriteRule ^(.*)$ https://admin.example.com/index.php/admin [R=301,L,QSA]

    # Compress, Combine and Cache Javascript/CSS
    RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&d=$2

    # Always send 404 on missing files in these folders
    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

    # Never rewrite for existing files, directories and links
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_URI} !server-status

    # Rewrite everything else to index.php
    RewriteRule .* index.php [L]

    # Force www in url and non-example domains to example
    RewriteCond %{HTTP_Host} !^www\.example\.com [NC]
    RewriteCond %{HTTP_Host} !^ww2\.example\.com [NC]
    RewriteCond %{HTTP_Host} !^qa\.example\.com [NC]
    RewriteCond %{HTTP_Host} !^uat\.example\.com [NC]
    RewriteCond %{HTTP_Host} !^local\.example\.com [NC]
    RewriteCond %{HTTP_Host} !^admin\.example\.com [NC]
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L,QSA]

</IfModule>

次のように書き直す必要があります。

書き直し: http://subdomain.example.com/tohttp://subdomain.example。 com/page

また、これで/ pageを非表示にします(/は/ pageであるかのように動作します)が、これは必須の要件ではありません。また、HTTPまたはHTTPSで動作するようにしたいと思います。

私はこれに何時間も苦労しているので、どんな助けでも大歓迎です。

15
leek

ルートパスの正しいリダイレクトは次のとおりです。

RewriteEngine On
RewriteRule ^/$ /page [R]

これを1つのサブドメインにのみ強制する(書き換えブロックが仮想ホスト定義にある場合はほとんど発生しないはずです):

RewriteEngine on
RewriteCond %{HTTP_Host} =subdomain.example.com
RewriteRule ^/$ /page [R]
22
sberder

削除した応答をコピーする:

あなたのdocumentrootのhtaccessで単に:

RewriteEngine on
RewriteCond %{HTTP_Host} =subdomain.example.com
RewriteRule ^$ /page
5
covener

ルートを別のパスに書き換えるには、2つのオプションがあります。

1)DirectoryIndex

DirectoryIndex anotherPath

2)Mod-rewrite:

RewriteEngine on


RewriteRule ^/?$ /anotherPath [L]

上記のオプションのいずれかを使用して、example.com/example.com/anotherPath

参照:

1https://httpd.Apache.org/docs/current/mod/mod_dir.html

2

http://httpd.Apache.org/docs/current/mod/mod_rewrite.html

1
starkeen