所以我有一个 .htaccess 文件,里面有这个:
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule ^/path/to/app/(.*)$ /path/to/app/public/$1 [NC,L]
当我在浏览器中转到 /path/to/app/ 时,它会显示目录结构,而不是将服务器重定向到 /path/to/app/public/$1
我究竟做错了什么?
所以我有一个 .htaccess 文件,里面有这个:
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule ^/path/to/app/(.*)$ /path/to/app/public/$1 [NC,L]
当我在浏览器中转到 /path/to/app/ 时,它会显示目录结构,而不是将服务器重定向到 /path/to/app/public/$1
我究竟做错了什么?
问题是这一行:
RewriteRule ^/path/to/app/(.*)$ /path/to/app/public/$1 [NC,L]
请记住:重写与前导斜杠不匹配。将您的规则更改为:
RewriteEngine On
RewriteBase /
RewriteRule ^(path/to/app)/(.*)$ /$1/public/$2 [NC,L]
我认为您尝试构建 Symfony 应用程序?要重写规则,您需要在 httpd.conf 中允许覆盖
DocumentRoot "/var/www/symfony/web"
<Directory "/var/www/symfony/web">
allow from all
AllowOverride All <-------------
Options +Indexes
</Directory>
如果你使用指令
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
这意味着if
目录存在then
显示结构else
使用其他 RewriteRule
也试试
RewriteRule ^/path/to/app/(.*)$ /path/to/app/public/$1 [QSA,L]