0

次のようなフラットリンクを使用したい:

http://somedomain.com/about-us
http://somedomain.com/products-list
http://somedomain.com/product/item    

したがって、次のような mod_rewrite ルールを使用しました。

<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-]+)/([0-9A-Za-z-]+)?$ /index.php?page=$1&value=$2 [L]
</IfModule>

最初の 2 つのリンクは正常に機能しています。しかし、3 番目のタイプのリンクにアクセスするたびに、相対パスとしてリンクされている画像、css、または任意の js スクリプトが表示されます。<img src="images/image.jpg"><a href="about-us">About Us</a>

http://somedomain.com/product/images/image.jpgブラウザはそれが と にあると考えhttp://somedomain.com/product/about-usます。

正しいパスはhttp://somedomain.com/images/image.jpghttp://somedomain.com/about-us

したがって、相対リンクを含むファイルは機能しません。

この問題を解決するにはどうすればよいですか? リンクされたすべてのファイルに対して、相対パスではなく完全パスを使用したくありません。.htaccessでいくつかの微調整を行う方法を提案してください

4

1 に答える 1

0

スラッシュをエスケープしてみてください:

RewriteRule ^([0-9A-Za-z-]+)\/([0-9A-Za-z-]+)?$ /index.php?page=$1&value=$2 [L]
于 2012-05-16T23:22:12.310 に答える