我正在尝试在加载文件时进行一些PHP验证,以确定是否可以向用户显示该文件。我需要使用PHP,因为我需要检查用户是否已登录。为此,我添加了
RewriteRule ^wp-content/uploads(/(custom_folder)/.*\.\w+)$ index.php?a_parameter=$1 [QSA,L]
到我的.htaccess。然后,每次用户尝试在/wp-content/uploads/custom_folder/
中查看文件时,我都会检查a_parameter
是否已定义并进行验证。
那很好,但是现在我只想对.htm
和.html
文件进行此验证。为此,我尝试添加
<FilesMatch "\.(htm|html)$">
RewriteRule ^wp-content/uploads(/(custom_folder)/.*\.\w+)$ index.php?a_parameter=$1 [QSA,L]
</FilesMatch>
但是它不起作用。
要提供更多背景信息,我正在尝试在WordPress的.htaccess中进行此操作,因此这是完整的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /_wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /_wp/index.php [L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /_wp/
RewriteRule ^index\.php$ - [L]
<FilesMatch "\.(htm|html)$">
RewriteRule ^wp-content/uploads(/(custom_folder)/.*\.\w+)$ index.php?a_parameter=$1 [QSA,L]
</FilesMatch>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /_wp/index.php [L]
</IfModule>
# END WordPress
我在做什么错了?
谢谢!
答案 0 :(得分:0)
我改变了态度。我没有使用FilesMatch
,而是将正则表达式更改为以.htm
,.html
和目录结尾的目标文件。鉴于我正在处理的项目的特征,我可以假定一个空目录将包含一个index.htm
或index.html
,因此这对我来说有效。如果是目录,那么我尝试在PHP中查找索引文件。
^wp-content/uploads/custom_folder/((?:.*\/)|.*\.(?:html|htm))$ index.php?relative_path=$1 [QSA,L]