2

2 つの条件付きルールが必要です。バックグラウンド:

http://www.domain.com/.htアクセス
http://www.domain.com/index.php
http://www.domain.com/admin/index.php

私は両方の書き換えルールを持っています:

根:
RewriteEngine オン
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*/)([^/]+)/([^/]+) $1?$2=$3&%1 [L]
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^([^/]+)/ $1.php?%1 [L]

管理者:
RewriteEngine オン
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([az]+?)/([az]+?)/(.*)$ index.php?model=$1&view=$2¶ms=$3 [L,NS]

どうにかして、ルート レベルで .htaccess ファイルを 1 つだけ使用して両方のルールを使用する必要がありますが、ADMIN ルールは urlhttp://www.domain.com/admin/foo/bar/something/elseと ROOT ルールが に適用される場合にのみ適用されhttp://www.domain.com/foo/bar/something/elseます。

前もってありがとう、私はこれをやろうとして丸一日殺しました.1つが機能すると、もう1つは「見つかりません」というページエラーが表示されます.

クリス

4

2 に答える 2

2

私はこれを使用します:

RewriteEngine On

# /admin/ rule
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/([a-z]+)/([a-z]+)/(.*)$ admin/index.php?model=$1&view=$2&params=$3 [L,NS]
RewriteRule ^admin/ - [L]

# other rules
RewriteRule ^(.*/)([^/]+)/([^/]+)$ $1?$2=$3 [L,QSA]
RewriteRule ^([^/]+)/ $1.php [L,QSA]

QSAフラグ ( query string append )はRewriteCond %{QUERY_STRING} (.*)ディレクティブを置き換えます。

于 2009-06-14T21:50:41.190 に答える
2
RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/)([^/]+)/([^/]+) $1?$2=$3&%1 [L]
RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^([^/]+)/ $1.php?%1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/([a-z]+?)/([a-z]+?)/(.*)$ /admin/index.php?model=$1&view=$2&params=$3 [L,NS]
于 2009-06-14T15:30:12.917 に答える