1

Expression EngineでWebサイトの1つを再構築したところ、すべてが順調に進んでいます。以前のサイトの古いURLを修正するために、一連のリダイレクトを作成する必要がありました。

例:

古いサイトは次のようなURLを作成しました:index.php?id = 30

たとえば、これは次の場所にリダイレクトする必要がありました:http: //www.example.com/contact

だから私の.htaccessで私は作成しました:

リダイレクト/index.php?id=30http://www.example.com/contact

さまざまなIDすべてに対してこれを約50回実行しました。ただし、これらのリンクにアクセスすると、ホームページにドロップされ、URLが元の状態に保たれます。(www.example.com/index.php?id=30)。

次に、存在しないURLに対してこれを実行していることに気付きました。だから私は入力することができます:

www.example.com/asdasdjasdbjhasdbjhasdbjhasdbjhasdbjhasd

そしてそれは単に私をホームページに落とすだけです。

リダイレクトの例とともに、.htaccessファイルに他にあるものを次に示します。この最初のビットは、URLから/index.phpを削除するだけです。

RewriteEngineオン

    # Removes index.php from ExpressionEngine URLs
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]

Redirect /index.php?id=30 http://www.example.com/contact

Redirect /index.php?id=26 http://example.com/careers

Redirect /index.php?id=28 http://example.com/about

では、ここで何が起こっているのでしょうか。ExpressionEngineには、リダイレクトを中断するリダイレクトが組み込まれていますか?

助けてくれてありがとう!

4

1 に答える 1

0

ステートメント内のクエリ文字列と照合することはできません。を使用して変数と照合Redirectする必要があります。式エンジンのルールのに、必ず次のルールを追加してください。RewriteCond%{QUERY_STRING}

RewriteCond %{QUERY_STRING} ^id=30
RewriteRule ^/?index.php$ http://www.example.com/contact [L,R]
RewriteCond %{QUERY_STRING} ^id=26
RewriteRule ^/?index.php$ http://www.example.com/careers [L,R]
RewriteCond %{QUERY_STRING} ^id=28
RewriteRule ^/?index.php$ http://www.example.com/about [L,R]

于 2013-01-22T05:59:16.460 に答える