vor*_*ent 0 php ftp .htaccess apache2
我有单独的域指向专用框上的单独文档根
我想授予对此文档根目录下的子文件夹ftp-upload的FTP访问权限.
正确的FTP配置不是此问题的一部分
如果授权人员将文件上传到document_root/ftp-upload,则应通过domain.com/file而不是domain.com/ftp-upload/file访问此文件
.htaccess文件位于文档根目录中
我尝试了一些东西,但它们似乎没有用.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
## check if the file exists in subfolder
## ...and if found, stop and display it
RewriteCond %{DOCUMENT_ROOT}/ftp-upload/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/ftp-upload/$1 -d
RewriteCond $1 !^$
RewriteRule (.*) %{DOCUMENT_ROOT}/ftp-upload/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|css|assets|ftp-upload)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我也试过了
RewriteCond %{DOCUMENT_ROOT}/ftp-upload/${REQUEST_FILENAME} -f
Run Code Online (Sandbox Code Playgroud)
和
RewriteCond %{DOCUMENT_ROOT}/ftp-upload%{REQUEST_URI} -f
Run Code Online (Sandbox Code Playgroud)
这是一项正在进行的工作,所以这不是最终的解决方案,但是这个功能正在被要求很多.如果可能的话,我宁愿不让他们访问文档根目录.
更新:它看起来像什么工作,什么时候需要......
如果我输入domain.com/test.txt(仅存在于ftp-upload目录中),请求将转至domain.com/index.php/test.txt并在主页上提供服务
如果我输入domain.com/ftp-upload/,我会得到一个包含test.txt的目录列表
如果我点击test.txt,我会得到文件内容(这是"它的工作原理!").如果我输入domain.com/test.txt,我会再次显示文件内容...
我的脑袋爆炸......任何想法?
解决了另一种方式,这里的答案在我的服务器上不起作用.
我现在建立的CMS有另一个用户组'SEO优化'和上传部分.在该部分下,用户可以选择他们要将文件上传到哪个指定位置.如果上传文件夹中存在所请求的文件,则网站index.php(控制器/路由器)将提供服务.没有.htaccess编辑,因为我的服务器表现得很时髦..
事实,因为我理解他们(如果错误,请纠正我)
ftp-upload对此文档根目录下的子文件夹的FTP访问权限.document_root/ftp-upload,则该文件应该可以通过domain.com/file而不是domain.com/ftp-upload/file对于上述事实,这是一个工作.htaccess文件.请注意,我是所使用的文件夹名称ftp-upload,你已经使用了几种不同的版本在你的问题(ftp-upload,ftp_upload,ftpupload)确认,这是你的配置保持一致
您域中的.htaccess文档根文件夹
RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/ftp-upload%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/ftp-upload%{REQUEST_URI} -d
RewriteRule ^(.*)$ ftp-upload/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|css|assets)
RewriteRule ^(.*)$ index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)
我所做的是检查子文件夹中是否存在所请求的文件/ftp-upload.
棘手的是RewriteCond file -f需要一条完整的道路.这就是为什么你通常会测试%{REQUEST_FILENAME}%
如果这个条件为真(文件存在)只需重写请求ftp-upload/filename
这也将为子文件夹内工作ftp-folder如文件夹ftp-folder/test/image.png将作为访问/test/image.png
第二部分就是你通常的"如果文件不存在,重写为/index.php"
编辑
在旁注
OP表示"这不起作用" - 好吧,谢谢你的尝试 - 在这篇有用的评论之后,我接近删除了我的答案,但是在我完成这篇文章的工作之后,因为我验证了建议的解决方案是完美的,我决定喘口气并提供一些调试技巧.
这说,如果这不适合你:
ftp-upload,Linux也区分大小写确保您的网络服务器配置为读取.htaccess文件:
AllowOverride Allgivemeanerror on在.htaccess中添加无效(例如)的内容并在Web浏览器中打开页面来测试.如果读取.htaccess文件,您将在浏览器中收到500 Internal Server错误消息.如果您没有测试环境,可以在测试子文件夹中执行此操作我上面发布的配置应该替换放在你的(不在ftp-upload文件夹中)的文件的整个内容,以便调试甚至删除包装器,一旦这个工作正常就可以放回去.htaccessDOCUMENT_ROOT<IfModule>
用于测试,将图像文件复制到ftp-upload文件夹中,比如说 test.png
http://yourdomain.com/test.png并复制结果希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |