我希望能够在app /的同一级别的文件夹中访问项目根目录下的静态文件。这是因为这是我唯一有权在我的服务器上读写文件的目录,因此我们的图像会上传到那里。
所以如果有人写这个网址:
www.mysite.com/img-rw
它在[project-root] / my-rw-dir
的文件夹中显示图像有关如何编辑.htaccess文件的任何想法都可以完成吗?
由于
答案 0 :(得分:0)
考虑到这是一个课程项目(正如OP在评论中所说)而你并不关心安全漏洞,这就是你能做的。
默认情况下,CakePHP有3个嵌套的.htaccess
文件:
/.htaccess
(项目根文件夹)/app/.htaccess
/app/webroot/.htaccess
当您尝试访问www.mysite.com时,第一个(最顶层)是第一个回复:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
显然,这会将用户请求权限发送到/app/webroot
文件夹。我们可以使用/app/webroot/.htacess
中存在的条件检查,而不是立即重定向到webroot
,检查给定的URL是否与文件或文件夹匹配。为此,您需要更新父文件(/.htaccess
):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d # Checks if the given URL matches to a folder
RewriteCond %{REQUEST_FILENAME} !-f # Checks if the given URL matches to a file
#RewriteRule ^$ app/webroot/ [L] # This line is commented, should be removed
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
这样,如果没有满足任何条件,请求只会被重定向到/ app / webroot。如果您只需要返回文件,则可以删除RewriteCond %{REQUEST_FILENAME} !-d
,以验证URL是否与文件夹匹配(-d
=目录)。
只检查文件的清洁版本应如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
通过此调整,访问www.mysite.com/image.jpg应该返回项目根目录(image.jpg
)托管的文件/image.jpg
。
答案 1 :(得分:0)
For anyone wondering, this works great :
.htaccess (project root)
import matplotlib.dates as md
yfmt = md.DateFormatter('%H:%M')
ax.yaxis.set_major_formatter(yfmt)