0

URLをstockpicks.phpからstock-picksに書き換えたいです。www.website.com/stock-picks にアクセスすると、stockpicks.php ページが表示されます。私は次のルールを使用します。

RewriteRule ^stock-picks /stockpicks.php [PT]

また、以前のページstockpicks.phpが完全にstock-picksに移動したことを検索エンジンに知らせたいです。次のルールを使用していますが、301 リダイレクトが機能していないようです。RewriteCond が正しくないと思います。

RewriteCond %{THE_REQUEST} stockpicks.php$
RewriteRule ^stockpicks.php$ /stock-picks [R=301,L]
4

3 に答える 3

0

@Johndaveの投稿は、最初の要件を処理します。

また、stockpicks.phpを要求するリクエストをリダイレクトして、将来/ stock-picks /を使用できるようにする必要があります(これは、公開するこのリソースの新しい場所であるため)。

    Redirect permanent /stockpicks.php http://hostname.com/stock-picks/

これにはRedirectディレクティブを使用します。これは、Apacheに「HTTP301MovedPermanently」応答を送信させる最も簡単な方法だからです。

@Johndaveによって提案された書き換えルールは、元の試行で[PT]フラグを指定した場合のように、URLマッピングプロセスを再開しないため、これがループに陥ることはないことに注意してください。

(Apacheに.phpファイルを処理させるために)[PT]フラグを使用する必要がある場合は、要件が競合している可能性があります。

于 2012-07-25T19:43:24.707 に答える
0

キャレット ^ は、現在のディレクトリの下の URL の開始を示します。このディレクトリは、.htaccess ファイルが入っているディレクトリです。ほぼすべての一致はキャレットで開始します。

ドル記号 $ は、照合する文字列の末尾を示します。これを追加して、ルールが長い URL の最初の部分に一致しないようにする必要があります。

    RewriteEngine on
    RewriteRule ^stock-picks$ stockpicks.php
于 2012-07-25T19:28:54.470 に答える
0

は実際の%{THE_REQUEST}HTTP 要求と一致し、次のいずれかのようになります。

GET /stockpicks/ HTTP/1.1

GET /stockpicks.php?some=stuff HTTP/1.1

HEAD /stockpicks.php

POST /stockpicks.php HTTP/1.0

したがって、RewriteCondの正規表現を次のようにする必要があります (スペースをエスケープする必要があることに注意してください)。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /stockpicks.php
于 2012-07-26T00:19:11.967 に答える