Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Apache别名而不是重写规则来服务HTML页面_Apache_Mod Rewrite_Mod Alias - Fatal编程技术网

使用Apache别名而不是重写规则来服务HTML页面

使用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

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

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
作为代理目标。成功了。请更新答案以便我能接受。