3

私はウェブサイトを持っています: www.explainmortgage.com

その Web サイトには、 http://www.explainmortgage.comhttp://www.explainmortgage.com/mortgage (他の多くのページの中でも) があります。

http://www.explainmortgage.comhttp://www.explainmortgage.com/mortgageは同じなので、301 http://www.explainmortgage.com/mortgagehttp://www.explainmortgage.comに変換したい

私はこの同じコードベースを複数のドメインに使用していますが、ほとんどのドメインで同様の状況が発生しています。

したがって、このコードベースを使用して、すべてのドメインでこの状況をカバーする 1 つの RewriteCond RewriteRule ペアを作成したいと考えています。

だからここに私が欲しいルール(疑似コード)があります:

if ({HTTP_HOST}) contains ({REQUEST_URI} minus the leading /)
then 301 to http://{HTTP_HOST}

例:

{HTTP_HOST} == 'www.explainmortgage.com'
{REQUEST_URI} == '/mortgage'

{HTTP_HOST} == 'www.explaincars.com'
{REQUEST_URI} == '/cars'

{HTTP_HOST} == 'www.explaineducation.com'
{REQUEST_URI} == '/education'

{HTTP_HOST} == 'www.explainelectronics.com'
{REQUEST_URI} == '/electronics'

ですから、私に手を差し伸べてくれる正規表現の専門家がいる場合は、大いに感謝します。

4

2 に答える 2

3

試す:

RewriteCond %{HTTP_HOST} ^(www\.)?explain([^\.]+)\.com$ [NC]
RewriteCond %{REQUEST_URI}:%2 ^/([^/]+)/?:\1 [NC]
RewriteRule ^ / [R=301,L]

ここでの秘訣は、最初に、の前後のすべての一致をグループ化explainすることです。次に(aの2番目のパラメーターで%変数を使用できないため)、URIと前の後方参照を組み合わせて、それと一致します。それらが同じである場合は、にリダイレクトします。.com%{HTTP_HOST}RewriteCond\1/

于 2012-08-01T18:02:15.700 に答える
0

http://www.explainmortgage.com/mortgageにリダイレクトすることだけが必要な場合はhttp://www.explainmortgage.com、ファイル内の次のルールで.htaccessそれが行われます。このNCフラグにより​​、比較で大文字と小文字が区別されなくなります。これは (リダイレクトまたは書き換え) には影響しませんURI=/mortgage/

RewriteRule ^mortgage$ / [R=301,L,NC]

あなたのコメントから、より多くの URL をホームページにリダイレクトしたいと言っている場合は、次の方法で目的を達成できる可能性があります。以下は、存在しないファイルまたはディレクトリを指す URL を任意のドメインのホームページにリダイレクトします。たとえば、「/mortgage」、「/bob」、「/carol」がファイルとして存在しない場合、それらはすべて「/」にリダイレクトされます。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [R=301,L]
于 2012-08-01T16:01:24.680 に答える