-1

このような URL で 1 つのサイトを最適化しようとしています/category.php?show=numberID

私はこのようなものが欲しい:/category/numberID/

たとえば、私がしたい:http://example.com/category.php?show=8なりたいhttp://example.com/category/8/

私はグーグルでこれに出くわしました.htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^category/([^/]*)/$ /category.php?show=$1 [L]

このコードの何が問題なのですか。私はチュートリアルのリンクをたくさん見ていましたので、私にチュートリアルのリンクを送らないでください。あなたのアドバイスが欲しいだけです。

4

1 に答える 1

2

コメントで説明したように、書き換えルールは正常に機能しているようで、問題はページのスタイリングが機能しなくなったことです。

この背後にある問題は、ブラウザーに関する限り、現在ディレクトリ内にいるため/category/8/です。これは、スタイルや画像などへの相対リンクが/category/8/、サイトのルートではなく解決されることを意味します。例えば:

<img src="images/test.jpg" alt="Test" />
<script src="scripts/site.js" type="text/javascript"></script>

次のように解決されます。

<img src="/category/8/images/test.jpg" alt="Test" />
<script src="/category/8/scripts/site.js" type="text/javascript"></script>

それらが本来あるべき場所ではなく、サイトのルートにあります。これを修正する最も簡単な方法は、次のようにすべてのリソース リンクを絶対リンクにすることです (先頭に を追加します/)。

<img src="/images/test.jpg" alt="Test" />
<script src="/scripts/site.js" type="text/javascript"></script>

別の一時しのぎの解決策 (上記よりもはるかに好ましくない) は、次の<base .. />ようにタグを使用することです。

<base href="http://example.com/" />

これにより、すべての相対リンクがそれに対して解決される必要があることがブラウザに通知されますbase

于 2012-12-21T10:25:54.507 に答える