即使Apache中不存在目录,也要向目录URL添加尾部斜杠

时间:2015-08-07 19:20:41

标签: php apache .htaccess mod-rewrite

我创建了一种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     

上的RewriteEngine
RewriteCond %{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中的静态链接会被破坏。

0 个答案:

没有答案