Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (?!^infos/)^(.+?)/?$ /dl.php?f=$1 [L,QSA,NC]
此 htaccess 用于制作用户友好的下载 URL。
example.com/some_file_to_download.zip
将重定向到下载页面
example.com/dl.php?f=some_file_to_download.zip
问题是当文件名包含特殊字符时+
,&
它会弄乱 GET 变量dl.php
有问题的 URL 示例:
example.com/file&special+characters
将重定向到
example.com/dl.php?f=file&special+chracters
所以我们这里有一个问题。
如何在我的 htaccess 文件中转义这些特殊字符?我无法控制原始 URL(在它被重定向到之前dl.php
),所以我不能只使用 php 来进行 urlencode。