如何配置.htaccess仅对pictures目录及其子目录实现重定向?
解决Apache重定向规则范围问题
你的规则会作用于整个根目录,核心原因是当前规则没有限定仅匹配/pictures/开头的请求——RewriteBase只是用来调整重写时的路径基准,不是用来过滤请求范围的。
给你两种可行的解决方式:
方式1:将规则移至pictures目录的.htaccess(推荐)
直接在/root/pictures/.htaccess中写入以下规则:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) https://archive.com/pictures/$1 [R=302,L]
这样规则只会处理pictures目录下的请求,捕获的路径片段$1会直接拼在目标URL的/pictures/后,完全符合你预期的重定向结构。
方式2:在根目录.htaccess中限定规则匹配范围
如果必须把规则留在根目录的.htaccess,修改规则为:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^pictures/(.*) https://archive.com/pictures/$1 [R=302,L]
这里通过^pictures/(.*)明确限定了只有请求路径以pictures/开头的才会触发重定向,其他目录的请求不会被干扰。
两种方式都能实现你要的效果:只有/pictures/下不存在的文件或目录,才会保留原路径结构重定向到archive.com对应地址。
内容的提问来源于stack exchange,提问作者Coon Dog
相关产品推荐
相关产品推荐

