0

URL のクリーニングを行っています。

URL http://www.example.com/index.php?id=12345&name=some-nameがあるとします

mod_rewrite を使用して見栄えを良くするために変更しました

http://www.example.com/blog/12345/some-name

ここでの問題は、ページ index.php が画像、css ファイル、およびアンカー リンクをまったくロードしていないことです。

私の画像の場所はhttp://www.example.com/images/12345/some-image.jpgです

サイト全体で相対パスを使用しました。

すべてのページのリンクを変更する必要がありますか? .htaccess は私のためにいくつかのトリックを行うことができますか? 助けてください。

ここに私の .htaccess- があります

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^blog/(.*)/$ index.php?id=$1 [NC,L]

RewriteRule ^blog/(.*)/(.*)$ index.php?id=$1&name=$2 [NC,L]
4

3 に答える 3

2

追加した 2 行目を見てください。

RewriteEngine On
RewriteRule \.(css|jpe?g|gif|png|js|css|htm|html|mp3|wav|ico)$ - [L]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^blog/(.*)/$ index.php?id=$1 [NC,L]
RewriteRule ^blog/(.*)/(.*)$ index.php?id=$1&name=$2 [NC,L]

これは基本的に、この拡張子が URL に含まれている場合は、そのままファイルに渡すことを意味します。

于 2013-01-31T17:34:38.703 に答える
1

あぁ…!

ヘッダーにこの小さな行を追加したところ、すべての問題が解決しました:)

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

今、私は次のようになっています...なぜ私の心はこれを考えるのにとても時間がかかったのですか:)

于 2013-01-31T18:37:44.290 に答える
1

RewriteCond は次のルールのみに適用され、それ以降のすべてのルールには適用されません。2 番目のルールは、存在するディレクトリとファイルを回避しようとはしていません。これを試して

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^blog/(.*)/$ index.php?id=$1 [NC,L]


RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^blog/(.*)/(.*)$ index.php?id=$1&name=$2 [NC,L]
于 2013-01-31T17:35:16.827 に答える