我有一个PHP项目,我重定向每个URL到index.php
.但上传文件夹中的文件(.png,.pdf等)可以直接访问.有没有办法防止这种情况,也重定向像https://example.com/uploads/asdf.pdf
到index.php
的URL.
这是我的.htaccess
文件:
AddType application/x-httpd-php .html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]
RewriteRule ^([^\.]+)$ $1.php [NC,L]
对.htaccess
文件进行了一些更改,但没有帮助。
1条答案
按热度按时间7y4bm7vi1#
要将所有未Map到物理文件或Map到
/uploads
目录中的.pdf
文件的请求重写为index.php
,则基本上只需在上述规则中添加一个额外的OR
'd条件。举例来说:
因此,上面指出,任何形式为
/uploads/<file>.pdf
的请求(无论.pdf
文件是否存在)OR,如果没有Map到物理对象,则会重写为index.php
。如果您希望通过
index.php
重写/uploads
目录中的 * 所有内容 *,则只需将正则表达式从^/uploads/[^/]+\.pdf$
更改为^/uploads/
。我还简化了
RewriteRule
指令中的正则表达式(并使其更有效)(因为您不需要匹配和捕获所有内容),并且QSA
标志在这里是多余的。更新:
它是如何可能与文件,这是在上传文件夹的子文件夹?
您可以在前面的条件(
RewriteCond
指令)中调整正则表达式。例如./uploads
文件夹下的任何.pdf
文件(包括任何子文件夹):有关正则表达式(regex)的详细信息,请参阅以下问题:
Reference - What does this regex mean?