web-dev-qa-db-ja.com

Apache仮想ホストはクライアントIPによって異なりますか?

私が達成しようとしているのは:

1. A person, with IP 192.168.1.5 loads my webserver (192.168.1.2) and reaches htdocs/
2. Another person, with ip 192.168.1.6 does the same request, and reaches htdocs/folder/

可能であれば、ポート80のリクエストのみに固執したいと思います。

私は現在セットアップを使用しています:

<LocationMatch "/">
    Order deny,allow
    Deny from all
    Allow from ::1 127.0.0.0/8 localhost 192.168.1.5
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>  

<VirtualHost 192.168.1.2:80>
    ServerAdmin frederik@*.dk
    DocumentRoot "/XAMPP/htdocs/"
    ServerName 192.168.1.2
    ErrorLog "logs/lan-error.log"
    CustomLog "logs/lan-access.log" combined
</VirtualHost>

他のすべてのユーザーがフォルダを表示できるようにしたいと思います。そして、クライアントIPに応じて、別のDocumentRootを設定します。

5
Frederik Spang

(条件付きDocumentRootを使用して)思い描いている方法でそれを実行できるとは思わない。ただし、VirutalHost宣言、またはドキュメントルートの.htaccessファイルに以下を追加することにより、Apache Rewritesで同じことを実現できます。

RewriteEngine On 
RewriteCond %{REMOTE_Host} !^192\.168\.1\.5
RewriteCond %{REQUEST_URI} !^/blog/?
RewriteCond %{REQUEST_URI} /(.*)$
RewriteRule (.*) /blog [R=301,L]

基本的に、ユーザーのIPが自分のIPアドレスではなく、/blogフォルダー内の何かを要求していない場合、ユーザーは/blogフォルダーにリダイレクトします。 IPアドレスの場合、または/blogフォルダー内の何かを要求している場合、リダイレクトは発生しません。

1