0

URL 要求でサブフォルダーが指定されていない場合、ドメインをサブフォルダーにリダイレクトする必要があります。

たとえば。

a) 「domian.com」または「www.domain.com」からのリクエストを「www.domain.com/page」にリダイレクトしたい。

b) ただし、リクエストが「domain.com/page2」または「www.domain.com/page2」から送信された場合、リクエストを「www.domain.com/page」にリダイレクトしたくありません。

仮想ホストでいくつかの順列を試してみましたが、うまくいきませんでした。以下は私のコードです:

<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com

<Directory />
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    <IfModule mod_rewrite.c>
      Options +FollowSymLinks
      Options +Indexes
      RewriteEngine On
      RewriteBase /
      RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
      RewriteCond %{REQUEST_URI} !^/$1
      RewriteRule ^(.*)$ /Page [L]
    </IfModule>
</Directory>

ProxyPreserveHost On
ProxyPass         /  http://www.domain.com:8080/
ProxyPassReverse  /  http://www.domain.com:8080/
</VirtualHost>

どんなポインタも役に立ちます。

4

2 に答える 2

1

代わりにこれを試すことができます:

  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com [NC]
  RewriteCond %{REQUEST_URI} ^$   [NC]
  RewriteRule .* /Page [L]
于 2013-03-27T08:13:59.420 に答える
0

はすべての要求を除外するため、は使用されません。RewriteCond%{REQUEST_URI} !^/$1RewriteRule

ルートディレクトリだけを書き換えたい場合は、代わりに特定の正規表現を使用してください。 ^/$また、ルールを適切な でラップする必要があります。囲まれているものはすべて、URL パスではなく<Directory>、ファイル システム ディレクトリに適用されるためです。

<Directory /path/to/documentroot>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
    RewriteRule ^$ /Page [L]
</Directory>
于 2013-03-27T08:37:52.220 に答える