RewriteRule がパブリック URL パスに使用されているのをいつも見てきましたが、URL を内部パスにマップすることはできますか?
たとえば、すべてのリンクを my_page.php にリダイレクトすることは許可されていますか? :
RewriteRule .* /home/yccaucom/public_html/my_page.php [last,noescape]
RewriteRule がパブリック URL パスに使用されているのをいつも見てきましたが、URL を内部パスにマップすることはできますか?
たとえば、すべてのリンクを my_page.php にリダイレクトすることは許可されていますか? :
RewriteRule .* /home/yccaucom/public_html/my_page.php [last,noescape]
ドメイン ルート内にないフォルダーまたはファイルにリダイレクトすることはできません。
ルートフォルダーが次の場合:
/home/yccaucom/public_html/
または などの 内public_html
にあるものにのみリダイレクトできます。また、内部フォルダーまたはファイルへのシンボリックリンクを作成することもでき、それも同様に機能するはずです。public_html/css
public_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]