.htaccess中的Dynamic RewriteRule

时间:2013-04-23 11:48:30

标签: .htaccess mod-rewrite

有没有办法将它结合起来:

RewriteCond %{THE_REQUEST} (user-x/project/www)
RewriteRule ^.*$ /user-x/project/www/index.php [NC,L]

RewriteCond %{THE_REQUEST} (user-y/project/www)
RewriteRule ^.*$ /user-y/project/www/index.php [NC,L]

RewriteCond %{THE_REQUEST} (user-z/project/www)
RewriteRule ^.*$ /user-z/project/www/index.php [NC,L]

适用于“n”个用户的“动态”规则吗?

我考虑到了这一点:

RewriteRule ^/([a-z]+)/project/www/index.php$ /$1/project/www/index.php [NC,L]

不幸的是,当与正则表达式匹配时,RewriteRule的第一个参数不包括整个路径。

有什么想法吗?

编辑:.htaccess文件位于“www”目录中。

1 个答案:

答案 0 :(得分:1)

不确定为什么要尝试匹配%{THE_REQUEST},这实际上是请求而不是URI。但你可以像:

RewriteCond %{THE_REQUEST} (user-x|user-y|user-z)/project/www
RewriteRule ^ /%1/project/www/index.php [L]

但是%{THE_REQUEST}变量实际上看起来像这样:

GET /some/path/maybe/a/user-x/project/www/and/some/more/stuff HTTP/1.1

以上条件符合上述要求。否则,您可以更具体地了解匹配的符号:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(user-x|user-y|user-z)/project/www/?($|\ )
RewriteRule ^ /%1/project/www/index.php [L]