0

.htaccessルールを使用した高度なリダイレクトが必要

これが私の現在のルールです。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/van.*
RewriteCond %{REQUEST_URI} !^/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/truck.*
RewriteCond %{REQUEST_URI} !^/admin.*
RewriteCond %{REQUEST_URI} !^/login.*
RewriteCond %{REQUEST_URI} !^/session.*
RewriteCond %{REQUEST_URI} !^/path_maps.*
RewriteCond %{REQUEST_URI} !.*\.(gif|jpg|png|js|css|swf)

RewriteCond %{HTTP_HOST} !^www\.dealer1\.com
RewriteCond %{HTTP_HOST} !^www\.dealer2\.com
RewriteCond %{HTTP_HOST} !^www\.dealer3\.com
RewriteCond %{HTTP_HOST} !^www\.dealer4\.com


RewriteRule (.*) http://www.example.com [R=301,L]

このルールは、RewriteCondにないすべてのトラフィックをに転送しwww.example.comます。ただし、これが発生した場合は、次の修正が必要になります。

/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/van.*

パスが訪問されたら、リダイレクトしたいwww.example.com/van

4

2 に答える 2

1

私が最初にすることは、これを単純にすることです。.swf最初にパターンの最後に。*を追加するのは冗長であり、URIがsayで終わるかどうかをテストする場合は、を使用します\.swf$。また、必要に応じてルールを組み合わせます。

次に、空白の除外を行う最も簡単な方法は、「^-」を使用することです。これは、「常に何もしない」の省略形です(条件が満たされている場合)。[L]を追加すると、次のルールが使用されなくなります。または、[skip = N]を使用して、次のN個のルールをスキップできます。

そして、ベースを指定します。たとえば、/.htaccessがDOCROOTにある場合は、次のようになります。

Options +FollowSymLinks
RewriteEngine On
RewriteBase   /
#
# No redirects for a specific list of dealers, paths and file types
#
RewriteCond %{HTTP_HOST}   ^www\.(dealer1|dealer2|dealer3|dealer4)\.com [OR]
RewriteCond %{REQUEST_URI} ^/(admin|login|session|path_maps)\b          [OR]
RewriteCond %{REQUEST_URI} \.(gif|jpg|png|js|css|swf)^
RewriteRule ^              -                                            [L]
#
# Otherwise redirect var URIs to /van
#
RewriteCond %{REQUEST_URI} ^/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/van
RewriteRule ^              http://www.domain.com/van                    [R=301,L]
#
# Redirect everything except truck to /
#
RewriteCond %{REQUEST_URI} !^/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/truck.*
RewriteRule ^              http://www.domain.com                        [R=301,L]

最後に、私はあなたの長いURIを本当に疑っています。サーバーとクエリビットを除くすべてのリクエストURI(たとえば、http//server/abc/login?user=fred/abc/login。たとえば、このサイトのこのパス以外のすべてを新しいドメインにリダイレクトしたい場合はどうでしょうか。

http://www.domain.com/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/truck

ユーザーにそのような複雑なURIの使用を強制することは、ユーザーの訪問を思いとどまらせる良い方法です。

于 2012-08-14T09:59:26.220 に答える
0

現在のルールの後に、これを追加するだけです。

RewriteCond %{HTTP_HOST} !^www\.dealer1\.com
RewriteCond %{HTTP_HOST} !^www\.dealer2\.com
RewriteCond %{HTTP_HOST} !^www\.dealer3\.com
RewriteCond %{HTTP_HOST} !^www\.dealer4\.com

RewriteRule ^/?content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/van.* http://www.domain.com/van [R=301,L]
于 2012-08-14T02:29:10.910 に答える