0

/admin次の 2 行を使用して、すべての呼び出しをサブドメインにリダイレクトしようとしてい.htaccessます。

RewriteCond %{REQUEST_URI} ^admin [NC]
RewriteRule ^(.*)/$ http://admin\.somedomain\.com/$1/ [R,L]

まあ、何も起こりません。リダイレクト ルールを無視して、/admin ディレクトリのコンテンツを表示するだけです。

参考までに (そして、.htaccessファイル全体を貼り付ける要求をスキップするために)、以下に示します。

Options +FollowSymlinks -Indexes
RewriteEngine on

Redirect 404 /favicon.ico

RewriteCond %{REQUEST_URI} ^admin [NC]
RewriteRule ^(.*)/$ http://admin\.somedomain\.com/$1/ [R,L]

# Send all admin. traffic to /admin
RewriteCond %{HTTP_HOST} ^admin\. [NC]
RewriteRule ^(.*)$ /admin/$1 [L]

# Check for www. and add it
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} !^admin\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R,L]

# Add trailing slash if not found
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !favicon.ico
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R,L]

# Process virtual links/directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !favicon.ico
RewriteRule ^(.*)$ index.php/?$1 [QSA,L]
4

1 に答える 1

0
RewriteCond %(HTTP_HOST} !^admin\.somedomain\.com$
RewriteCond %{REQUEST_URI} ^/admin [NC]
RewriteRule ^(.*)$ http://admin.somedomain.com$1 [R,L]

RewriteCondの一致で先頭のスラッシュがありませんでした。admin.somedomain.comが他のドメインと同じ構成になっている可能性があることを前提として、ドメインがすでにadmin.somedomain.comである場合に、ルールが適用されないことを確認するチェックも追加しました。RewriteRuleで、いくつかの小さな変更を加えました。右側が一致していないため、ドットをエスケープする必要はありません。

残りのルールにもいくつかの問題があります。これは機能しません。たとえば、次のようになります。

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1

ルールのその側でサーバー変数を使用することはできません。

于 2013-03-01T02:36:29.687 に答える