0

URL書き換え初心者です。

ホームページにアンカーテキストがあり、クリックすると別のページが開きます。リンクをクリックしたときにブラウザに表示されるターゲット URL は http://example.com/index.php?p=one/two/three/pdp&abc=436です。

代わりに、URL http://example.com/index.php?p=shopping/shop/ipad/pdp&abc=436に表示したいと思います 。

したがって、基本的に私が見ているのは、1/2/3 からの URL の置換です

ショッピング/ショップ/ipadへ

URL http://example.com/index.php?p=one/two/three/pdp&abc=436をhttp://example.com/index.php?p=shopping/shop/ipad/の ようにしたいpdp&abc=436 .

私は14,000ページを持っているので、物理的にどこにでも行って変更することはできません. URL書き換えを使用してこれを実現したい。したがって、ルートで次の行を .htaccess に追加しました。

RewriteEngine On  
RewriteRule  ^shopping/shop/ipad/?$ one/two/three/pdp [NC,L] 

しかし、これは内部サーバーエラーを引き起こしています。

より良い URL を表示するにはどうすればよいですか? ありがとう

4

4 に答える 4

1

これを試すことができます:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING}  p=one/two/three/(.*)
RewriteRule .*  http://example.com/index.php?p=shopping/shop/ipad/%1? [R=301,L]

リダイレクトします:

http://example.com/index.php?p=one/two/three/pdp&abc=436

に:

http://example.com/index.php?p=shopping/shop/ipad/pdp&abc=436

私は仮定して`p=one/two/three/おりp=shopping/shop/ipad/、定数です。それらが変数である場合は、質問を更新し、それらの関係とパターンを説明して、それらをキャプチャして置き換えることができるようにする必要があります。

2 番目のオプション:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING}  p=one/two/three/([^/]+)&([^/]+)=([^/]+).*
RewriteRule .*  http://example.com/index.php?p=shopping/shop/ipad/%1/%2/%3? [R=301,L]

リダイレクトします:

http://example.com/index.php?p=one/two/three/anything1&anything2=anything3

に:

http://example.com/index.php?p=shopping/shop/ipad/anything1/anything2/anything3

于 2012-12-28T16:38:39.053 に答える
0

さらに別の方法:

index.phpスクリプトを変更するための十分なアクセス権がある場合は、Webサーバーではなく、そこで書き換えを行うことができます。これには、クエリ文字列を適切に処理できる強力な言語を自由に使用できるという利点があります。

于 2012-12-28T16:06:16.160 に答える
0
于 2012-12-28T16:03:11.527 に答える
0

これを試して:

Redirect 301 old_url new_url

例:

Redirect 301 index.php?p=one/two/three/pdp&abc=436 http://example.com/index.php?p=shopping/shop/ipad/pdp&abc=436

問題が解決することを願っています。解決しない場合は申し訳ありませんが、試していません。

ご挨拶。

于 2012-12-28T15:51:14.083 に答える