0

mod_rewriteモジュールを有効にしましたが、すべて問題ありません。

URLの簡単なルールを作成しましたが、パラメーターを使用してURLナビゲーション(書き換え)を無効にするにはどうすればよいですか?

例:

# rewrite rule for cleaning
RewriteRule ^bookstore/([0-9]+)?$ /bookstore/book.php?id=$1 [L]

これで、 http://mydomine.com/bookstore/123に移動するとすべて完了しましたが、URLhttp ://mydomine.com/bookstore/book.php ? id=123もナビゲートできます。

最初のものだけを表示してナビゲートできるようにするにはどうすればよいですか?

4

2 に答える 2

0

これについては100%確実ではありませんが、AをBに書き直すと、AとBの両方が機能すると思います。

http://mydomine.com/bookstore/book.php?id=123もナビゲート可能であることがなぜ問題なのか、正確に質問したいと思います。そのリンクも有効であり、ユーザーが両方のリンクを使用できる場合の問題は何ですか... 2番目のオプションを見つけるには、ある程度の時間と運が必要ですが。彼らはそれをすることによって何を得るでしょうか?あなたは何を失いますか?どちらの場合も答えが「何もない」場合は、心配するのをやめてください。:)以前に古いリンクを使用していて、現在は新しいリンクに置き換えている場合は、顧客の古いブックマークが引き続き機能するのは良いことです。

ただし、古いURLを無効にする正当な理由があると仮定して、両方を変更するのはどうでしょうか。たとえば、「book.php」の名前を「xyz.php」に変更してから、 http ://mydomine.com/bookstore/123をhttp://mydomine.com/bookstore/xyz.php?id=123にリダイレクトします。古いhttp://mydomine.com/bookstore/book.php?id=123は機能しなくなります。

わかりました、それ醜い解決策ですが、ファイルの名前を変更する代わりに、http://mydomine.com/xyz/bookstore/book.php?id = 123のようなサブディレクトリにファイルを移動するだけで、より良い解決策にすることができます。または、リダイレクトを使用して「シークレット」パラメータを追加し、PHPファイルでチェックすることもできます。たとえば、 http://mydomine.com/bookstore/123をhttp://mydomine.com/bookstore/bookに書き換えます。 php?id = 123&secret=xyz。確かに、それは単なる「隠すことによるセキュリティ」ですが、繰り返しになりますが...あなたの本当のURLを発見することで、誰もが正確に何を得ることができるでしょうか。

于 2012-09-10T11:09:24.347 に答える
0

これを同じhtaccessファイルに追加します。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /bookstore/book\.php\?id=([0-9]*)
RewriteRule ^bookstore/book\.php$ /bookstore/%1? [L,R=301]

これにより、クエリ文字列を含むURIのリクエストが含まれないものに301リダイレクトされます。

于 2012-09-10T11:14:48.923 に答える