2017-05-16 8 views
0

Apacheを実行していた以前のサーバーでは、固定パターンに404を指定していた特定のパターンのURLを転送するのに役立つhtaccessルールがありました。Nginxで壊れたURLを修正するための正規表現

昔私のサイトのための私のURLはhttp://domainname/articlenameし、その後、私はhttp://domainname/category/articlename

ようにそれを変更し今の問題は、Googleが404年代に戻ってきているし、私にはない任意のURLを傍受したい古いリンクですカテゴリがあり、偽のカテゴリを挿入すると、WordPressのインストールでURLを解決できます。

は、だから私は

(404を与える)このURL

http://www.criticalhit.net/prey/を取り、それを変更します、私はどこかの設定ファイルになります想定し、この問題に対するnginxのソリューションを探しています

http://www.criticalhit.net/fixed/prey/ 

これが正しく解決されます。

+0

商品名のリストかパターンがありますか?あなたは任意のリストのためにマップを使うことができます。ガイダンスについては、[この回答](http://stackoverflow.com/questions/43236108/nginx-rewrite-urls-with-special-characters/43236721#43236721)を参照してください。 –

+0

4000以上の記事がありますので、かなりのリストです。私が捉えたいパターンは、カテゴリセクションがなく、私が提供する特定のリストにないURLです。だから私は特定のURLを追加するURLの中間部分を取得から除外することができます –

+1

除外されたURLと 'if'ブロックのマップを使用して、書き換えられたリンクを返すか、除外されたパターンの' locations'を構築し、 'location /'ブロックから削除します。 –

答えて

0

return 301を使用してこの簡単な書き換えを効率的に実行できますが、名前付きの場所を使用して書き換えを実行します。

除外されたURLをバイパスする正規表現の場所(PHPロケーションブロックの後ろ)を配置します。これには、try_filesステートメントによって提供される静的ファイルを含める必要はありません。例えば

root /path/to/root; 
index index.php; 

location/{ 
    try_files $uri $uri/ @rewrite; 
} 
location @rewrite { 
    return 301 /category$request_uri; 
} 
location ~ \.php$ { 
    try_files $uri =404; 
    ... 
} 
location ~ ^/(category|tags|feeds) { 
    try_files $uri $uri/ /index.php; 
} 

は、より多くのためにthis documentを参照してください。

関連する問題