【发布时间】:2016-02-17 04:50:39
【问题描述】:
美好的一天。 我在项目中有以下结构:
/project
...
/web
/uploads
.htaccess
test.txt
.htaccess // Symfony htaccess
我想将所有对/uploads/test.txt 的请求重定向到一个单独的控制器,该控制器决定用户是否有权读取test.txt 文件。
/web/uploads/.htaccess的内容如下:
RewriteEngine On
Options +FollowSymLinks
RewriteRule ^(.*)uploads/test.txt$ /app_dev.php/uploader/test [PT,L,QSA]
问题是这个 htaccess 文件永远不会将请求重定向到控制器操作(上传器/测试指向正确的控制器和操作)。
它只返回uploads/test.txt 文件。日志显示文件只是通过启用/禁用 PT 标志传递。
[Mon Nov 16 07:40:40.823485 2015] [rewrite:trace3] [pid 27811] mod_rewrite.c(468): [client 192.168.142.1:61956] 192.168.142.1 - - [test.lh/sid#b6329d90][rid#b63fe058/initial] [perdir /var/www/test/web/uploads/] applying pattern '^(.*)uploads/test.txt$' to uri 'test.txt'
[Mon Nov 16 07:40:40.823500 2015] [rewrite:trace1] [pid 27811] mod_rewrite.c(468): [client 192.168.142.1:61956] 192.168.142.1 - - [test.lh/sid#b6329d90][rid#b63fe058/initial] [perdir /var/www/test/web/uploads/] pass through /var/www/test/web/uploads/test.txt
那么,为什么它没有重定向到控制器?
【问题讨论】:
-
您是否检查过您的
.htaccess上游某处没有RewriteCond %{REQUEST_FILENAME} -f [NC,OR]?就像在你的 apache 虚拟主机配置中一样? -
不,我在 vhost 配置中没有类似的东西。我已删除子文件夹中的 .htaccess,并将“test.txt”的重写规则移至 Symfony htaccess 的顶部。仍然没有正确重定向。
标签: php apache .htaccess symfony mod-rewrite