我创建了一种AWS S3代理PHP脚本,它隐藏了很多用户名/密码背后的文件。
我的问题是,类似目录的网址必须为html文件中的链接添加尾部斜杠才能生效。 例如:foo.com/link应该重写为foo.com/link /
文件网址仍应为文件网址。 例如:foo.com/folder/image.png - > foo.com/folder/image.png
我找到了很多像这样的
的Apache mod_rewrite规则RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
但是RewriteCond %{REQUEST_FILENAME} !-f
取决于服务器上存在的实际请求的文件夹。因为我确实从AWS S3获取了实际的文件夹和文件,所以它失败了。
我目前的.htaccess
上的RewriteEngineRewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
RewriteCond $1 !^(redirect\.php|test\.php|css)
RewriteRule ^(.*)$ redirect.php?file=$1 [L]
以前是否有人遇到此问题并找到解决方案?
扩展信息:我已经实现了自动添加index.html,index.htm,default.php等。在redirect.php-scriot中,类似于文件夹的URL工作。但是如果没有添加尾部斜杠,则HTML中的静态链接会被破坏。