查看 URL 中没有扩展名的文件内容

查看 URL 中没有扩展名的文件内容

使用 Apache 和 Centos 7,我放入了两个特定的文件,/var/www/html如下所示

[root@sn acme-challenge]# pwd
/var/www/html/.well-known/acme-challenge
[root@sn acme-challenge]# ls -l
total 8
-rw-r--r--. 1 root root 88 Dec 21 12:19 8KyeoB4HPzOPR6Et9uBPWoldME6LGIBV3ps
-rw-r--r--. 1 root root  2 Dec 21 12:20 test.txt
[root@sn acme-challenge]# cat 8KyeoB4HPzOPR6Et9uBPWoldME6LGIBV3ps
8KyeoB4HPzOPR6Et9uBPWoldME6LGIBV3ps.QTHp9d8EEr94A5QohL1LAlh51l9Wsy4ET1jo
[root@sn acme-challenge]# cat test.txt
uu

当我输入时https://somewhere.com/.well-known/acme-challenge/test.txt,显示文件的内容uu

但是,当我输入时https://somewhere.com/.well-known/acme-challenge/8KyeoB4HPzOPR6Et9uBPWoldME6LGIBV3ps,它会被重定向到主站点,即https://somewhere.com

的内容/var/www/html/.htaccess

Options +FollowSymLinks
RewriteEngine On

AddEncoding gzip .gz
AddEncoding gzip .gzip
<FilesMatch "\.(js.gz|js.gzip)$">
  ForceType text/javascript
</FilesMatch>
<FilesMatch "\.(css.gz|css.gzip)$">
  ForceType text/css
</FilesMatch>

<Files CHANGELOG.txt>
deny from all
</Files>
<Files INSTALL.txt>
deny from all
</Files>
<Files UPDATE.txt>
deny from all
</Files>



RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} !/ow_updates/index\.php
RewriteCond %{REQUEST_URI} !/ow_updates/classes
RewriteCond %{REQUEST_URI} !/ow_cron/run\.php
RewriteCond %{REQUEST_URI} !/ow_cron/run\.php
RewriteCond %{REQUEST_URI} !/e500\.php
RewriteCond %{REQUEST_URI} !/captcha\.php
#RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.xml|\.feed|robots\.txt|\.raw|/[^.]*)$  [NC]
RewriteCond %{REQUEST_FILENAME} (/|\.php|\.html|\.htm|\.xml|\.feed|robots\.txt|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php

我该如何修复该问题以便可以查看内容8KyeoB4HPzOPR6Et9uBPWoldME6LGIBV3ps

答案1

看起来它在你的重写规则中:

RewriteCond %{REQUEST_FILENAME} (/|\.php|\.html|\.htm|\.xml|\.feed|robots\.txt|\.raw|/[^.]*)$  [NC]

/[^.]*匹配没有扩展名的文件。尝试以下操作:

RewriteCond %{REQUEST_FILENAME} (/|\.php|\.html|\.htm|\.xml|\.feed|robots\.txt|\.raw)$  [NC]

在我的服务器上进行了测试,似乎有所不同。

相关内容