1

RewriteRule がパブリック URL パスに使用されているのをいつも見てきましたが、URL を内部パスにマップすることはできますか?

たとえば、すべてのリンクを my_page.php にリダイレクトすることは許可されていますか? :

RewriteRule .* /home/yccaucom/public_html/my_page.php [last,noescape]
4

1 に答える 1

1

ドメイン ルート内にないフォルダーまたはファイルにリダイレクトすることはできません。

ルートフォルダーが次の場合:

/home/yccaucom/public_html/

または などの 内public_htmlにあるものにのみリダイレクトできます。また、内部フォルダーまたはファイルへのシンボリックリンクを作成することもでき、それも同様に機能するはずです。public_html/csspublic_html/some_folder

ルールを考えると、次のようになります。

RewriteCond %{REQUEST_URI} !^/my_page.php$ [NC]
RewriteRule ^ /my_page.php [L,NE]

条件が無限ループに陥らないようにする必要があります。

または、次の 2 つの条件を使用して、代わりに既存のファイル/フォルダーを確認できます。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

基本的に、ファイルまたはフォルダーが存在しない場合はリダイレクトされます。

ルールをそのまま使用しようとすると、次の場所にリダイレクトしようとします。

/home/yccaucom/public_html/home/yccaucom/public_html/my_page.php

ただし、ループを停止するための検証がないため、失敗することはほとんどないため、リダイレクトが多すぎるなどの失敗メッセージが表示されます。

ルールを詳しく見てみると、次のようになります。

10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe85288af18/initial] (3) [perdir /home/account/public_html/] strip per-dir prefix: /home/account/public_html/asdasdas2 -> asdasdas2
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe85288af18/initial] (3) [perdir /home/account/public_html/] applying pattern '.*' to uri 'asdasdas2'
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe85288af18/initial] (2) [perdir /home/account/public_html/] rewrite 'asdasdas2' -> '/home/account/public_html/edit.php'
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe85288af18/initial] (2) [perdir /home/account/public_html/] trying to replace prefix /home/account/public_html/ with /
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe85288af18/initial] (5) strip matching prefix: /home/account/public_html/edit.php -> edit.php
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe85288af18/initial] (4) add subst prefix: edit.php -> /edit.php
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe85288af18/initial] (1) [perdir /home/account/public_html/] internal redirect with /edit.php [INTERNAL REDIRECT]
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe852858798/initial/redir#1] (3) [perdir /home/account/public_html/] strip per-dir prefix: /home/account/public_html/edit.php -> edit.php
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe852858798/initial/redir#1] (3) [perdir /home/account/public_html/] applying pattern '.*' to uri 'edit.php'
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe852858798/initial/redir#1] (2) [perdir /home/account/public_html/] rewrite 'edit.php' -> '/home/account/public_html/edit.php'
10.0.0.1 - - [24/Aug/2013:05:25:24 --0300] [somedomain.com/sid#7fe8521040e0][rid#7fe852858798/initial/redir#1] (1) [perdir /home/account/public_html/] initial URL equal rewritten URL: /home/account/public_html/edit.php [IGNORING REWRITE]
于 2013-08-24T08:10:15.133 に答える