2

我需要两个条件规则。背景:

http://www.domain.com/.htaccess
http://www.domain.com/index.php
http://www.domain.com/admin/index.php

我有两个重写规则:

根:
重写引擎开启
重写条件 %{QUERY_STRING} ^(.*)$
重写规则 ^(.*/)([^/]+)/([^/]+) $1?$2=$3&%1 [L]
重写条件 %{QUERY_STRING} ^(.*)$
重写规则 ^([^/]+)/ $1.php?%1 [L]

行政:
重写引擎开启
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([az]+?)/([az]+?)/(.*)$ index.php?model=$1&view=$2¶ms=$3 [L,NS]

我需要以某种方式让根级别上的一个 .htaccess 文件同时使用这两个规则,但 ADMIN 规则仅在 urlhttp://www.domain.com/admin/foo/bar/something/else和 ROOT 规则适用于http://www.domain.com/foo/bar/something/else.

提前谢谢你,我已经花了一整天的时间来尝试这样做,当一个工作时另一个给我一个“未找到”页面错误。

克里斯

4

2 回答 2

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 回答
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标志(查询字符串追加)替换RewriteCond %{QUERY_STRING} (.*)指令。

于 2009-06-14T21:50:41.190 回答