2017-08-09 10 views
1

URLは以下のとおりです。後続のスラッシュがないと、404、htaccessを使用して修正する方法はありますか?

:URLのこれらのタイプのために私が持っている

  • (動作しない)http://example.com/seller/samsung
  • (ワークス)http://example.com/seller/samsung/

.htaccessのルールは次のようになりますRewriteRule ^seller/[^/]+/(.*)$ ./$1

これらのURLを両方とも同じページに移動するにはどうすればよいですか?

答えて

1

URLの末尾に後続のスラッシュを表示するだけで済みます。

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

ちょうどあなたがこれをテストする前に、あなたのキャッシュをクリアしてください:あなたは、あなたの.htaccessに次のように使用してはことを行うことができます。

EDIT:

RewriteCond %{REQUEST_URI} /+[^\.]+$ 
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] 

上記は何をしますか?したがって、状態はあなたのディレクトリをつかむので、例えば/samsungのようになり、最後に/があるかどうかをチェックします。そうでない場合、それは/samsung再び(URLの末尾にディレクトリを取得し、それを上/を追加します。それは301リダイレクトを使用してこれを行いますと/samsung/を残すだろう。Lについては

をフラグ(公式文書から取られた)。

[L]フラグは、ルール・セットの処理を停止するmod_rewriteを引き起こす ほとんどの状況では、これは、ルールが一致する場合、さらなるルール が処理されないことを意味し、このPerlの最後のコマンドに対応します。 Cの中断コマンドを表します。このフラグをind現在の ルールは、それ以上のルールを考慮せずにすぐに適用する必要があることを確認してください。

+0

申し訳ありませんが、それは私のためには機能しませんでした。私のhtaccessのコードでは、ページにアクセスすると、次のような2つのスラッシュを書きます:http://example.com/seller/samsung//about.php – Carl

+0

上記の編集を参照してください。 – Lag

+0

クール、それは動作しますが、私は正しい答えとしてマークする前に、あなたのコードに少し説明を追加できますか?私はhtaccessに新しいです – Carl

関連する問題