1

次のページ名があります

http://example.co.uk/vehicle.php?size=large

そして、次の書き換えルールを書いたので、ドメインは次のようになります

http://example.co.uk/size/large

ルールはこちら

RewriteEngine On
RewriteRule ^size/([a-zA-Z0-9]+)/$ vehicle.php?size=$1

2 つの問題があります。

  • 1つ目は、機能していないことです。実際、まったく機能していません。
  • 2 つ目は、それが機能する場合、不要なページ名を削除することです。そもそも自分の間違いを修正するのに苦労していますが、ドメインを次のようにしたいと考えています。


http://example.co.uk/vehicle/size/large
4

1 に答える 1

2

/vehicle.phpURLからURLにリダイレクトする場合は、次のこと/vehicle/を試してください。

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*?)=(.*?)$
RewriteRule ^vehicle\.php /vehicle/%1/%2? [R=301,L]

/example.php?foo=barクリーンなURL(など)で非クリーンなURL(など)のコンテンツを表示する/example/foo/bar場合、内部(aからb)と外部(bからa)の両方のリダイレクトを同時に使用しようとすると、循環リダイレクトの問題が発生します。

クリーンURLに切り替えることにした場合は、すべてのリクエストの唯一/index.phpのハンドラーとして使用し、 mod_rewriteを使用して古いURLからクリーンURLにリダイレクトすることをお勧めします。さらに、私は通常、ほとんどの操作をPHPで(PHPを介して解析することにより)実行し、mod_rewriteを使用してすべての要求をファイルにマップします。$_SERVER['REQUEST_URI']index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,QSA]

これは、最も柔軟で、わかりやすく、移植性の高いソリューションです。

于 2013-01-04T13:37:12.673 に答える