我已经开始了另一个个人使用的小项目,我正在设置我的web根htaccess文件。我已经很久没有碰过这个东西了,所以我对它有一些问题。
我将展示一些我想做的事情的例子,因为我不知道如何解释它很好。我的webroot包含:
/index.php
/test/test.txt
如果url是example. com/home,它应该输出example.com/index.php?page=home。这很容易做到,我对它没有任何问题。问题从现有的文件开始。如果url是example.com/test或example.com/test/test.txt,我希望它输出example.com/index.php?file=test或example.com/index.php?file=test/test.txt。这些是我的htaccess文件中的条件和规则。(这些仅适用于现有文件):
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ - [S=1]
RewriteRule ^(.*?)$ /index.php?file=$1 [L,QSA]
然而,当我输入example. com/test时,它直接进入目录“test”,而example.com/test.txt-只显示文件。
首先,这样做合适吗?如果合适,我该如何做到呢?提前感谢!
P.S.如何记录重写规则的处理过程?我发现可以通过修改httpd. conf中的LogLevel来实现。我将其设置为LogLevel alert rewrite:trace 6,但错误日志似乎不包含我需要的日志。
1条答案
按热度按时间bqjvbblv1#
您已经提出了多个问题,因此这是部分答案。
防止目录列表
对于任何没有index.php/html的文件夹,如果不希望列出其内容,请在该文件夹中创建一个**.htaccess文件,其中包含以下内容选项-索引**
防止文件执行
对于任何包含可供引用的文件(不打算执行或显示)的文件夹,请将权限更改为750它们仍可以在服务器端包含或引用。