2016-10-04 21 views
0

私は、次のURLがありますnginxの書き換えルール

mywebsite.com/template/product.html

を、私は

mywebsite.com/としてそれを書き換えたいです製品

location/{ 
    alias /var/www/web/; 
    rewrite ^/(mywebsite.com/template/.*)\.html$ /$1 last; 
} 
+0

httpリクエストに関して、ご質問のユースケースが見つかりました。 'http:// mywebsite.com/template/product.html'のすべてのリクエストを' http:// mywebsite.com/product'にリダイレクト(302または301)する必要がありますか?そして、なぜ、あなたは質問タグにApacheを追加したのですか? – freedev

+0

私は、ほとんどのApacheユーザーがnginxについて知っていると思っていました。はい、すべてのリクエストを「http:// mywebsite.com/product /」にリダイレクトします。 –

+0

ドメインを汎用変数として扱いますか?これは一種の大規模なホスティングですか? – freedev

答えて

0

ドメインを汎用バリアブルとして扱うかどうかは不明です。

とにかく、サーバー構成をmywebsite.comに設定した場合、この構成はケースに合っているはずです。

server { 
    error_log logs/mywebsite.com.log debug; 

    server_name mywebsite.com; 
    root /var/www/web/mywebsite.com; 
    # this directive handle the redirects from old name.html to new format 
    location /template/ { 
     rewrite ^/template/([^.]+)\.html$ /$1 redirect; 
    } 
    # given new new url format this directive match the name and 
    # read the file 
    location ~* ^/([^.]+)$ { 
     try_files /template/$1.html /template/notfound.html; 
    } 
} 

あなたが書き込んだ正規表現が製品名と一致しませんでした。今すぐグループはあなたの要件に合っているはずです。私はあなたがブラウザまたはボットを新しいURLにリダイレクトしたいと思うので、書き換えフラグlastredirectに変更しました。

+0

動作していますが、その表示が見つかりません404見つかりません。ここの問題は何ですか?いいえ、大規模なホスティングではありません。私は '' http:// mywebsite.com/template/product.html'のように '' http:// mywebsite.com/product/''に同じページを表示したいです。 –

+0

問題は、リクエストを '/ template/name.html'から'/name'にリダイレクトする方法です。新しいURL形式でhtmlをどのように読むかについては疑問がありませんでした。私はあなたが新しい問題の解決が期待されていると仮定したと思います。とにかく、私は自分の答えを更新しました。 – freedev

関連する問題