【发布时间】:2010-10-26 16:12:47
【问题描述】:
我的 .htaccess 中有一些条件和规则:
RewriteCond %{DOCUMENT_ROOT}/assets/img$1/.$2.$4/$3.$4 -f
RewriteRule ^assets/img(.*)/[a-zA-Z0-9-_\.]*\.[^/]+\.[a-z]{2,4}$ assets/img$1/.$2.$4/$3.$4 [NC]
RewriteRule ^assets/img(.*)/[a-zA-Z0-9-_\.]*\.[^/]+\.[a-z]{2,4}$ assets/img/image.php?path=$1&file=$2.$4&template=$3 [NC,L,QSA]
正则表达式是正确的(经过测试并且匹配,也在这个 .htaccess [1] 中)。变量 $1、$2、$3 和 $4 仍然是空的。而且我不确定为什么会这样。
前段时间,我在 /etc/apache2/sites-available/ 中为每个站点启用了自己的 vhost 配置,但过了一段时间,我使用 ServerAlias 和 VirtualDocumentRoot 将其自动化:
ServerAlias *.localhost
VirtualDocumentRoot "/var/www/%1/public"
这自动将 subdomain.localhost 映射到 /var/www/subdomain/public。另外,我需要调整我的 .htaccess。我必须插入一个 RewriteBase
RewriteBase /
这导致(我认为)我的 RewriteRules 不再起作用。这是真的?如果是这样,我怎样才能将这些更改为再次工作?
PS [1] 我使用这个 RewriteRule 验证了这一点:
RewriteRule ^assets/img(.*)/[a-zA-Z0-9-_\.]*\.[^/]+\.[a-z]{2,4}$ script.php?1=$1&2=$2&3=$3&4=$4 [L]
当您检查脚本中的参数 ($_GET) 时,它们的键存在于 $_GET 中,但它们都包含空字符串。
【问题讨论】:
标签: .htaccess apache2 mod-rewrite