我有一个问题,我需要保护网站免于上传和/或执行除图像以外的任何脚本或文件。
但我尝试使用.htaccess文件进行少量修改,但没有成功。
wordpress有wp-content / uploads文件夹,用于存储上传内容。在内部,它根据文件夹中的年/月组合进行排序。我在wordpress网站上使用了这个例子,但它以某种方式锁定整个文件夹,我甚至看不到图像。
public class CodeEditView extends LinearLayout implements TouchEditText.TouchEditTextListener{
private View root;
private InternalFile file;
private TouchEditText code;
private ScrollView scroll;
private int linesCount;
private TextView lines;
private int currentStartLine;
private int currentEndLine;
public CodeEditView(Context context) {
super(context);
init(null, context);
}
public CodeEditView(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs, context);
}
private void init(AttributeSet attrs, Context context) {
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
root = layoutInflater.inflate(R.layout.edit_code_layout, this).findViewById(R.id.scroll_view);
this.lines = (TextView) findViewById(R.id.edit_code_lines_view);
this.code = (TouchEditText) findViewById(R.id.edit_code_content_view);
code.setRoot(root);
code.setListener(this);
linesCount = 0;
scroll = (ScrollView) findViewById(R.id.scroll_view);
scroll.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
// int scrollY = scroll.getScrollY();
// if(scrollY != 0) {
// code.scrollEvent();
// if(currentStartLine < code.getCurrentStartLine()) {
//
// String c = lines.getText().toString();
// String cc = c.replaceFirst("\\d+", " ");
// cc += Integer.toString(code.getCurrentEndLine()+10) + System.lineSeparator();
// lines.setText(cc);
// currentStartLine = code.getCurrentStartLine();
//
// } else {
//// CharSequence c = lines.getText();
//// lines.setText(lines.getText().);
// }
// }
int scrollY = scroll.getScrollY();
if(scrollY != 0) {
code.scrollEvent();
}
}
});
}
public void setFile(InternalFile file) {
this.file = file;
}
public void setLexer(Lexer lexer) {
code.setLexer(lexer);
}
private void initLines() {
// currentStartLine = code.getCurrentStartLine();
// currentEndLine = code.getCurrentEndLine();
// int usedLines = code.getLineCount();
// if(usedLines != linesCount) {
//
// String text = "";
//
// for(int i = currentStartLine; i <= currentEndLine+10; i++) {
// text += Integer.toString(i) + System.lineSeparator();
// }
// lines.setText(text);
// linesCount = usedLines;
// }
int usedLines = code.getLineCount();
String text = "";
for(int i = 1; i <= usedLines; i++) {
text += Integer.toString(i) + System.lineSeparator();
}
Log.d("TEXT", Integer.toString(usedLines));
lines.setText(text);
linesCount = usedLines;
}
public void initText(String content) {
code.initText(content);
code.post(new Runnable() {
@Override
public void run() {
initLines();
}
});
}
public void setFont(Typeface typeFace) {
this.lines.setTypeface(typeFace);
this.code.setTypeface(typeFace);
}
@Override
public void onTyped(String text) {
EventBus.getDefault().post(new UpdateCacheFileEvent(text,file));
setLines();
}
public void forceSyntax(Syntax s) {
code.forceSyntax(s);
}
private void setLines() {
int usedLines = code.getLineCount();
if(usedLines > linesCount) {
lines.append(Integer.toString(usedLines) + System.lineSeparator());
linesCount = usedLines;
} else {
}
}
}
因此,有一种工作方式可以在wp-content / upload文件夹中上传和排序图像,然后再访问它们。我认为问题是有子文件夹sinside上传或我错了吗?
答案 0 :(得分:2)
因此,htaccess解决方案不会影响他们可以上传的内容,但会递归地影响所有子目录的访问。
RewriteEngine on
#if the file does not have one of theses extensions
RewriteCond %{REQUEST_URI} !\.(png|jpg|jpeg|gif)$
#then it should be marked as forbidden.
RewriteRule .*$ - [F]
应该这样做。