0

解決しなければならない mod の書き換えの問題があります。私は決して専門家ではありません。私は近づいていると信じていますが、まだ十分ではありません。

アプリのドキュメント ルートがhttp://doma.in/PlantImages/にあり、特定のページがhttp://doma.in/PlantImages/ImageData.asp?IDN=01を使用して読み込まれ た古いアプリがあり ます。 -002hなど。http://doma.in/index.php?mod=media&func=view&ot=collection&tpl=treeを使用して新しいアプリにアクセスし、http://doma.in/index.php?mod=media&func を使用して個々のページにアクセスするには、mod の書き換えが必要 です=display&ot=medium&slug=01-002h

さらに、新しいアプリには、短い URL を処理するための既存の一連の書き換えルールがあります。

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^(.*)$ - [NC,L]
RewriteRule ^(.*)$ index.php [QSA,L]

私が現在持っているものは次のとおりです。

RewriteEngine On

RewriteCond %{QUERY_STRING} ^IDN=$1
RewriteRule ^/PlantImages/ImageData\.asp index.php?mod=media&func=display&ot=medium&slug=$1

RewriteRule ^PlantImages/ index.php?mod=media&func=view&ot=collection&tpl=tree

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^(.*)$ - [NC,L]
RewriteRule ^(.*)$ index.php [QSA,L]

私はこれをほぼ機能させていますが、完全ではありません。最初の条件とルールをコメントアウトすると、2 番目 (PlantImages/) が適切にリダイレクトされます。しかし、コメントアウトされていない場合、最初のものはまったくリダイレ​​クトされず、css が壊れており、2 番目のものも壊れています。

4

1 に答える 1

1

後方参照ではなく、クエリ文字列の一致でキャプチャ グループを作成する必要があります。

RewriteCond %{QUERY_STRING} ^IDN=([^&]+)
RewriteRule ^/PlantImages/ImageData\.asp index.php?mod=media&func=display&ot=medium&slug=%1

そして、の%1代わりにグループ化を後方参照します$1

$次に、2 番目のルールのパターンでa を使用する必要があります。

RewriteRule ^PlantImages/$ index.php?mod=media&func=view&ot=collection&tpl=tree
于 2013-10-30T01:29:23.553 に答える