質問: サブフォルダーは永続的にサブドメインにリダイレクトしません 現在、www以外のすべてのurlをwwwのurlにリダイレクトする次のコードがあります。rewritecond %{http_host} ^example.com rewriterule ^(.*)$ http://www.example.com/$1 [r=301,l] そのリダイレクトに加えて、/ dev /へのすべての呼び出しをdev.example.comにリダイレクトします。私はさまざまなアプローチを試しましたが、何も機能しませんでした(replacematchのように接近する少数のものはdev.example.comビットにリダイレクトし、残りをクエリ文字列として残します)。何か案は?編集:ルートフォルダーの完全な.htaccessを次に示します(プライバシー上の理由からいくつかを書き直しました)。errordocument 404 /404.html addtype application/x-httpd-php .json addtype application/x-httpd-php .xml options +followsymlinks rewriteengine on rewritebase / # disables image hotlinking rewritecond %{http_referer} !^http://(.+\.)?example\.com/ [nc] rewritecond %{http_referer} !^$ rewritecond %{http_referer} !google\. [nc] rewritecond %{http_referer} !search\?q=cache [nc] rewriterule .*\.(jpe?g|gif|bmp|png)$ - [f] # stop htaccess rules from accessing these areas of the website. rewriterule ^(banner|boxart|cgi-bin|content|forums|includes|newsimages|newsimg|sidebar|union-files|google5e645385256c3a63.html) - [l] # redirects /page urls to /page/ rewritecond %{request_filename} !-f rewritecond %{request_uri} !\.[^./]+$ rewritecond %{request_uri} !/$ rewriterule (.*) /$1/ [r=301,l] # redirect old urls to their new urls rewriterule ^reviews/badurl--43.html$ http://www.gamingunion.net/reviews/goodurl--43.html [r=301,nc] # redirect non-www to www rewritecond %{http_host} ^example.com rewriterule ^(.*)$ http://www.example.com/$1 [r=301,l] redirectmatch 301 ^/dev/(.*)$ http://dev.example.com/$1 # url directory redirects rewriterule ^([^/]*)/$ /index.php?p=$1&urltype=slash [l,qsa] rewriterule ^([^/]*)/$ /index.php?p=$1&urltype=slash [l,qsa] rewriterule ^([^/]*)/([^/]*)/$ /index.php?p=$1&lv1d=$2 [l,qsa] rewriterule ^([^/]*)/([^/]*)/([^/]*)/$ /index.php?p=$1&lv1d=$2&lv2d=$3 [l,qsa] rewriterule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/$ /index.php?p=$1&lv1d=$2&lv2d=$3&lv3d=$4 [l,qsa] # url file redirects rewriterule ^([^/]*)\.html$ /index.php?p=$1&urltype=dot [l,qsa] rewriterule ^([^/]*)/([^/]*)\.html$ /index.php?p=$1&lv1p=$2 [l,qsa] rewriterule ^([^/]*)/([^/]*)/([^/]*)\.html$ /index.php?p=$1&lv1d=$2&lv2p=$3 [l,qsa] rewriterule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /index.php?p=$1&lv1d=$2&lv2d=$3&lv3p=$4 [l,qsa] # for servers that support output compression, you should pick up a bit of speed but un-commenting the following lines. php_flag zlib.output_compression on php_value zlib.output_compression_level 5 / dev /にあるものは基本的にこれと同じですが、上部にパスワード保護ビットがあり、サーバーのルートにのみ存在するいくつかのイメージフォルダーへのリダイレクトがいくつかあります。
回答: 次のリダイレクトコードを使用して、サブドメインをurlパラメーターに書き換えました。# rewrite subdomain rewritecond %{env:redirect_status} ^$ rewritecond %{http_host} ^([^\.]+)\.example\.org$ [nc] rewriterule ^(.*)$ index.php?q=116&company_name=%1$1 [l,qsa,nc] %1は、サブドメインの正規表現一致です。 $1は、他のすべてのurlパラメーターで構成されます。それをいじって、次のようにフォルダにリダイレクトします:rewritecond %{env:redirect_status} ^$ rewritecond %{http_host} ^([^\.]+)\.example\.org$ [nc] rewriterule ^(.*)$ /%1/$1 [l,qsa,nc]