使用Apache别名而不是重写规则来服务HTML页面
Apache配置中的一个简单别名不起作用-使用Apache别名而不是重写规则来服务HTML页面,apache,mod-rewrite,mod-alias,Apache,Mod Rewrite,Mod Alias,Apache配置中的一个简单别名不起作用- Alias /url/path/some-deleted-page.html /url/path-modified/new-avatar-of-some-deleted-page.html 它给出了“未找到页面”。 不过,RewriteRule按预期工作,但它会将重定向状态发送到浏览器。我希望浏览器/用户不知道重定向。因此,我想使用别名而不是重写规则。我想确认是否可以使用mod_别名映射单个URL 我还使用ProxyPassMatch,它将所有ht
Alias /url/path/some-deleted-page.html /url/path-modified/new-avatar-of-some-deleted-page.html
它给出了“未找到页面”。
不过,RewriteRule按预期工作,但它会将重定向状态发送到浏览器。我希望浏览器/用户不知道重定向。因此,我想使用别名而不是重写规则。我想确认是否可以使用mod_别名映射单个URL
我还使用ProxyPassMatch,它将所有html页面作为PHP脚本执行。此外,添加ProxyPass不会产生任何差异
ProxyPass /url/path/some-deleted-page.html !
请提供帮助,以便我可以将单个URL(一组URL)映射为别名,而不是重写规则。mod_Alias的目的是将请求的URL映射为运行httpd实例的系统上的目录。它不会向浏览器返回任何内容(即,没有重定向代码,没有任何内容)。这一切都是内部完成的。因此,你的客户甚至不知道它在那里 请求: 配置
[...]
DocumentRoot "/opt/apache/htdocs"
Alias "/someurl/" "/opt/other_path/someurl_files/"
[...]
在这种情况下,除了/someurl/
之外,请求任何URL的用户将从/opt/apache/htdocs
接收文件
如果用户请求/someurl/
,将使用/opt/other\u path/someurl\u files/
中的文件
本例中仍然缺少用于保护别名
目录的
定义
你应该读到:
Alias
将介绍需要将特定URL指向文件系统上特定目录的情况
如果您需要修改文件名(即客户端要求文件A,而您发回了B页),则应使用重写规则
。要隐藏更改文件名的事实,请使用[P]
标志
该指令允许您使用regex,但仍然使用代理机制。因此,您的客户确实知道发生了什么,因为他的地址栏中的地址不变。感谢您的澄清。请让我知道我们如何实现它,即执行类似于mod_rewrite的操作,而不向浏览器/客户端发送任何301、302、307等。我有使它工作的实际用例。如果存在旧URL,则可以将类似Facebook的/共享保留到新URL。我们不想为了满足FB crawler的要求而用虚拟页面来混乱代码。你们完全按照我在这里发布的方式来做<代码>别名“/您想要的url/”/您的系统上文件所在的目录/”。如果更改html文件名,请告诉我如何处理?“somedeletedpage.html”现在是“somedeletedpage.html的新化身”,mod_alias将URL映射到目录。它不会处理文件名的更改。为此,您需要使用mod_rewrite<带有
[P]
标志的code>RewriteRule将允许您完全控制重命名规则。使用[P]
标志,它将充当代理,因此客户端永远不会知道文件名与请求的页面不匹配。我使用[P]标志解决了这个问题。由于代理和主机服务器相同,我使用了http://localhost/url/path-modified/new-avatar-of-some-deleted-page.html
作为代理目标。成功了。请更新答案以便我能接受。