1

我正在尝试创建基于第一级目录名称重写的 mod_rewrite 规则,加上故障转移以重写到标准文件,以防没有匹配的目录名称。

例子:

我有units.php、models.php 和other.php。other.php 文件应处理所有未分配的请求。

http://www.mydomain.com/units/4435 应该重定向到/units.php?id=4435

http://www.mydomain.com/models/594 应该重定向到 /models.php?id=594

http://www.mydomain.com/anything 应该重定向到 /other.php?id=anything

http://www.mydomain.com/anything/893 应该重定向到 /other.php?id=anything/893

让我知道这是否有意义。我不确定如何构建规则和条件来实现我想要的。

这就是我试图做到的。它适用于以“units”或“models”开头的 URL,但如果我尝试任何其他 URL,则会收到 500 错误:

RewriteEngine On  
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
RewriteRule ^(units)/(.+)$ /units.php?id=$2 [L,NC] 
RewriteRule ^(models)/(.+)$ /models.php?id=$2 [L,NC]
RewriteRule ^(.+)$ /other.php?id=$2 [L,NC]
4

1 回答 1

0

我建议这样做:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(units|models)/([0-9]+)/?$ /$1.php?id=$2  [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  !^/(units|models)/[0-9]+/?$
RewriteRule ^/[^/]+/([0-9]+)/?$ /other.php?id=$1  [L,QSA]
于 2013-05-01T09:35:48.587 回答