如何隐藏请求的资产';服务Apache错误页时的文件路径?

如何隐藏请求的资产';服务Apache错误页时的文件路径?,apache,.htaccess,mod-rewrite,permissions,Apache,.htaccess,Mod Rewrite,Permissions,我们的服务器使用以下重写规则来隐藏图像位置,将www.domain.com/media/*定向到www.domain.com/secret/sub/directory/to/images/: RewriteRule ^media/(.*) /secret/sub/directory/to/images/$1 这在提供有效映像时效果很好,但在请求无效的资产URL时,404通知会显示完整的真实文件路径,而不是用户友好的URL。(我也注意到403也会发生这种情况) 例如: Not Found T

我们的服务器使用以下重写规则来隐藏图像位置,将
www.domain.com/media/*
定向到
www.domain.com/secret/sub/directory/to/images/

RewriteRule ^media/(.*) /secret/sub/directory/to/images/$1 
这在提供有效映像时效果很好,但在请求无效的资产URL时,404通知会显示完整的真实文件路径,而不是用户友好的URL。(我也注意到403也会发生这种情况)

例如:

Not Found

The requested URL /secret/sub/directory/to/images/image.png was not found on this server.

Apache/2.2.22 (Ubuntu) Server at www.domain.com Port 443

如何说服服务器显示面向用户的URL而不是完整的文件路径?

请尝试使用以下规则集:

重新编写引擎打开
#如果图像目录中存在请求的文件
#然后像在媒体上一样服务它。
重写cond%{REQUEST_URI}^/media/(.+)[NC]
重写cond%{DOCUMENT_ROOT}/secret/sub/directory/to/images/%1-f
重写规则^/secret/sub/directory/to/images/%1[L]
第一个条件检查我们是否从
媒体
请求,如果是,则将该文件名传递给下一个条件,该条件检查我们请求的内容是否确实存在于机密目录中

如果两个条件都通过,则使用对第一个条件的捕获部分的反向引用(
(.+)
=>
%1
)将请求内部重写到机密目录


如果请求的文件在机密目录中不存在,则跳过内部重写,Apache将显示服务器上不存在
/media/non-existence.png

请尝试使用以下规则集:

重新编写引擎打开
#如果图像目录中存在请求的文件
#然后像在媒体上一样服务它。
重写cond%{REQUEST_URI}^/media/(.+)[NC]
重写cond%{DOCUMENT_ROOT}/secret/sub/directory/to/images/%1-f
重写规则^/secret/sub/directory/to/images/%1[L]
第一个条件检查我们是否从
媒体
请求,如果是,则将该文件名传递给下一个条件,该条件检查我们请求的内容是否确实存在于机密目录中

如果两个条件都通过,则使用对第一个条件的捕获部分的反向引用(
(.+)
=>
%1
)将请求内部重写到机密目录


如果请求的文件不存在于机密目录中,则跳过内部重写,Apache将显示服务器上不存在
/media/non-existence.png

请显示用于完成此操作的规则集。@MikeRockett已编辑。请显示用于完成此操作的规则集。@MikeRockett已编辑。非常感谢。在最后一行中,我不得不将
^
更改为
^media/(.+)
,但从那以后一切都很好。由于条件的原因,这不重要,但如果它起作用,那么它就起作用了。不客气,太好了,谢谢。在最后一行中,我不得不将
^
更改为
^media/(.+)
,但从那以后一切都很好。由于条件的原因,这不重要,但如果它起作用,那么它就起作用了。不客气。