mod_rewriteの使用に取り掛かるのに苦労しています。私はこれに約1時間グーグルをしていましたが、何もうまくいかないようです。私がやりたいのは、example.com /species.phpをexample.com/speciesに変更し、example.com /species.php?name=frog
を
example.com/species/frogに変更することです
。
使用する
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^species/(.*)$ /species.php?name=$1
example.com/species.php?name=frogを取得してexample.com/species/frogとして表示し、
RewriteRule ^species/ /species.php
example.com/species.phpをexample.com/species/として表示することはできますが、両方を同時に動作させることはできません。
また、末尾にスラッシュがないexample.com/speciesは常に404として表示され
ます。問題をキャッチするために/species/ディレクトリを作成することを検討しましたが、1つのspecies.phpファイルに対していくつかのルールを設定したいと思います。どんな助けでも喜んでいただければ幸いです!
編集(あと8時間は自分の質問に答えられないため):
私は両方の問題を解決したようです。.htaccessを次のように変更しました:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^species/(.*)$ /species.php?name=$1
RewriteRule ^species/?$ /species.php
2番目のRewriteRuleは、example.com /speciesをexample.com/species.phpに正常にリダイレクトし、他のRewriteRuleは同時に機能します。
ただし、末尾にスラッシュを付けてexample.com/species/と入力すると、example.com /species.php?name =として読み取られ、名前が送信されなかったためにエラーがスローされるため、追加しました。
if(isset($_GET['name']) && empty($_GET['name'])) {header('location: http://example.com/species');}
example.com/species/を使用すると、/speciesにリダイレクトされて希望どおりに機能するようになります。