我在.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]
regex是正确的(已测试并匹配,在这个.htaccess[1]中也是如此)。变量$1、$2、$3和$4仍然是空的。我不知道为什么会这样。
不久前,我在/etc/apache2/sites available/中为每个站点启用了自己的vhost配置,但过了一段时间,我使用serveraalias和virtualdocumentroot将其自动化:
ServerAlias *.localhost
VirtualDocumentRoot "/var/www/%1/public"
此自动将subdomain.localhost映射到/var/www/subdomain/public。另外,我需要调整.htaccess。我必须插入一个rewritebase
RewriteBase /
这导致(我想)我的重写器不再工作了。这是真的吗?如果是这样的话,我怎么能把它们换成新的呢?
PS[1]我用这个重写器验证了这一点:
RewriteRule ^assets/img(.*)/[a-zA-Z0-9-_\.]*\.[^/]+\.[a-z]{2,4}$ script.php?1=$1&2=$2&3=$3&4=$4 [L]
当您检查脚本($\u get)中的参数时,它们的键存在于$\u get中,但它们都包含空字符串。