【发布时间】:2019-07-17 07:45:30
【问题描述】:
我有这样的文件夹结构
/
/project1
我通常将它与一个域 (example.com) 一起使用,但现在我想将它用作一个单独的域 (project1.example.com),并且我正在使用 apache 虚拟主机。 我已成功设置,但链接上发生了一些问题。 project1 中的所有超链接都是包含“project1”子文件夹的路径(例如 project1/image/pic.jpg)。 我是这样设置的
DocumentRoot /doc_root/
Alias /project1 /doc_root/project1/
Alias / /doc_root/project1
RewriteRule /project1/(.*) /$1 [R]
问题是当我重写干净的 url 例如example.com/project1/post?id=1 => project1.example.com/post/1 与
RewriteRule ^/post/(\d+)$ /project1/post.php?id=$1 [PT,NC,L,QSA]
我在页面的 ajax 帖子中收到 404 错误 由于 ajax url 指向 /project1/process.php 而且我认为这个请求不是重写。
这样设置的正确方法是什么?谢谢!
【问题讨论】:
-
重定向意味着向客户端发送一个可以找到文档的新 HTTP(S) URL。如果可能(自己的服务器/VPS)使用虚拟主机配置,并且不要尝试在 mod_rewrite 中实现这样的功能,因为这是一个性能问题。另见httpd.apache.org/docs/2.4/rewrite/vhosts.html 和When not to use mod_rewrite。这是要走的路:httpd.apache.org/docs/2.4/vhosts/examples.html
-
另请注意,大多数大型托管服务提供商在客户 Web 界面中实施了一项功能,您可以在其中将其他域应用于子文件夹。在执行跨域请求时,您还需要处理 CORS 标头。 developer.mozilla.org/en-US/docs/Web/HTTP/CORS
标签: php apache mod-rewrite virtualhost mod-alias