我的.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中,但它们都包含空字符串。
答案 0 :(得分:0)
我解决了自己的问题。如果其他人偶然发现了这个问题,这就是答案。
愚蠢我删除了正则表达式中的括号。通过改变这个:
[a-zA-Z0-9-_\.]*
进入这个:
([a-zA-Z0-9-_\.]*)
再次有效!