0

私は自分のウェブサイトに seo フレンドリーな URL を使用しようとしましたが、私の目標は次のように書き換えるproduct/131/ABCDEFGHことでした。productpage.php?id=131

私はこれを達成し、パスを書き換えて正しいページを開きます

.htaccess コード

RewriteEngine on
RewriteBase /
RewriteRule ^product/(([^/]*))/([^/]*)$ /cprrpc/productpage.php?id=$1 [L]

内部リンクに関連する別の問題が発生しました。現在、このページのすべての画像などは相対パスでバインドされています。

すべてが異なるパスで検索しているため、これは機能しません。

別のアプローチで開くか、htaccess ファイルを変更します。

4

2 に答える 2

1

Apache が既存のファイルを実際の場所から提供できるようにする必要があります。

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^product/(([^/]*))/([^/]*)$ /cprrpc/productpage.php?id=$1 [L]

これは、イメージが要求された場合、Apache が書き換えを無視することを意味します。

于 2013-02-22T11:00:34.943 に答える
1

ディレクトリ レベルが 2 つ増えたため、書き換えられた URL 構造で URL が歪められます。現在のディレクトリへの相対 URL を使用する代わりに、リソースの先頭にスラッシュを使用するか、PHP を使用して、すべてのリソースの前にアプリケーションへの「ルート パス」を出力できます。

たとえば、(現在のディレクトリへの) 相対 URL を使用する代わりに、次のようにします。

<img src="images/plus.png" />( localhost/cprrpc/product/131/images/gplus.pngに展開されます)

URL を Web ルートに相対的にする先頭のスラッシュを使用できます。

<img src="/cprrpc/images/plus.png" />( localhost/cprrpc/images/gplus.pngに展開されます)

または、PHP を使用して Web ルートを出力することもできます。

<img src="<?php echo $WEB_ROOT ?>/images/plus.png" />( localhost/cprrpc/images/gplus.pngに展開されます)

于 2013-02-22T11:01:26.807 に答える