使用 Apache Alias 而不是 RewriteRule 来提供 HTML 页面

use Apache Alias instead of RewriteRule to serve HTML page

Apache 配置中的简单别名不起作用 -

Alias /url/path/some-deleted-page.html /url/path-modified/new-avatar-of-some-deleted-page.html 

它给出“找不到页面”。 但是 RewriteRule 按预期工作,但它会将重定向状态发送到浏览器。我希望 browser/user 不知道重定向。因此,我想使用 Alias 而不是 RewriteRule。我想确认 mod_alias 是否可以用来映射个人 URL。

我还使用 ProxyPassMatch,它将所有 html 页面作为 PHP 脚本执行。添加 ProxyPass 也没有区别。

ProxyPass /url/path/some-deleted-page.html !

请提供帮助,以便我可以使用 Alias 而不是 RewriteRule 映射单个 URL(其中一堆)。

mod_alias 的目的是将请求的 URL 映射到系统 运行 您的 httpd 实例上的一个目录。它不会 return 对浏览器有任何影响(即没有重定向代码,什么也没有)。这一切都是在内部完成的。因此,您的客户甚至不知道它在那里。

Request: http://www.example.com/someurl/index.html

配置

[...]
DocumentRoot "/opt/apache/htdocs"
Alias "/someurl/" "/opt/other_path/someurl_files/"
[...]

在这种情况下,除了 /someurl/ 之外,请求任何 URL 的用户将收到来自 /opt/apache/htdocs 的文件。

如果用户请求 /someurl/,将使用来自 /opt/other_path/someurl_files/ 的文件。

此示例中仍然缺少用于保护 Alias 目录的 <Directory> 定义。

你应该阅读:https://httpd.apache.org/docs/2.4/mod/mod_alias.html


Alias 将涵盖您需要将某个 URL 指向文件系统上特定目录的情况。

如果您需要修改文件名(即客户端要求文件A,而您发回页面B),您应该使用RewriteRule。要隐藏您更改文件名的事实,请使用 [P] 标志。

该指令允许您使用正则表达式,但仍使用代理机制。所以您的客户确实知道发生了什么,因为他地址栏中的地址没有改变。