4

ウェブサイトのフラット リンクを作成したい。.htaccessコードは次のとおりです。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([0-9A-Za-z]+)?$ /index.php?page=$1 [L]
    RewriteRule ^([0-9A-Za-z]+)/?$ /index.php?page=$1 [L]
</IfModule>`

現在、私のウェブサイトは機能してprint_r($_GET)おり、すべての値を確認して取得できます。

私のウェブサイトには次のようなコードがあります: <img src="images/icons/image.png" />、画像は path: にあり/images/icons/up.pngます。

これで、次のように自分の Web サイトにアクセスできますhttp://somedomain.com/home。すべて正常に動作します。しかし、私が置くと: http://somedomain.com/home/、スタックします。

画像は、ブラウザの次のようなパスを取得します:http://somedomain.com/home/images/icons/image.pngこれは使用できず、次のようにする必要があります: http://somedomain.com/images/icons/image.png

これを解決するには?

フルパスではなくすべてのリンクに相対パスを使用したいので、 .htaccessを変更することで解決策があれば役に立ちます。


ベン・クリフォードの助けに感謝します。彼によると、2 番目のルール 1 を index.php ではなく、最初のルールのような形式にリダイレクトする場合。その後、動作するはずです。

4

1 に答える 1

1

その 2 番目の書き換えルールを変更して、ユーザーを index.php ではなく / 以外のバージョンのパスにリダイレクトすることができます。そのリダイレクトされたページが読み込まれると、正しい基本パスを持つ最初のルールにヒットします。

問題は、画像名が URL の最後の / の後のすべてを置き換えることです: somedomain.com/home と言うと、画像ファイル名は somedomain.com/ に追加されますが、2 番目のケースでは、最後の / はホームのにあります。書き換えルールを使用して this / off をプルーニングすると、それが修正されると思います。

于 2012-05-16T17:06:25.493 に答える