答えはとてもシンプルなものになると思いますが、泣きたいのですが、理解できないようです。私はmod_rewriteを初めて使用します。
リンクをdomain.com/?p=aboutからdomain.com/about* / *(末尾のスラッシュ付き)などに変更したかったのですが、正常に機能しますが、リンクに移動すると、新しいリンクが追加されます。 URLの後ろへのリンク。たとえば、aboutとcontactlinkがあります。アバウトをクリックするとdomain.com/about/に移動し、連絡先をクリックするとdomain.com/about/contact/に移動し、URLの最後にリンクを追加し続けます。domain.comにアクセスしてリンク(この場合はabout)をクリックすると、domain.com / about /に移動し、さらに約4回クリックすると、アドレスバーに「domain.com/」と表示されます。 about / about / about / about / about / "これを以下の非常に簡単な例で再現しましたが、何が間違っているのでしょうか。
.htaccess
RewriteEngine On
RewriteRule ([a-zA-Z0-9]+)/$ index.php?p=$1
index.php
<a href="about/">about</a> | <a href="contact/">contact</a><br><br>
<?php
if(!isset($_GET['p'])) {
echo "home";
} else {
echo $_GET['p'];
}
?>
ご協力ありがとうございました!
編集:絶対パスを使用する場合は問題なく機能しますが、絶対に使用する必要がない場合は使用しません。
edit2:追加
RewriteBase /
リンクを解除します。彼らはdomain.com/about/と.../contact /に行くように見えますが、私は404を取得します-私が使用したルールは、リンクを行う方法と何らかの形で互換性がないと思います。そのためです。 index.phpも含めました。