【问题标题】:How can I Alias Or Rewrite the subfolder to a domain如何将子文件夹别名或重写为域
【发布时间】: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 而且我认为这个请求不是重写。

这样设置的正确方法是什么?谢谢!

【问题讨论】:

标签: php apache mod-rewrite virtualhost mod-alias


【解决方案1】:

这里有几个问题:

  1. 别名规则看起来不正确且令人困惑。
  2. 您提供的重定向规则不会提取查询字符串参数(即不会将路径从/project1/post?id=1 重写为/post/1)也不会更改域名(即不会更改域到project1.example.com)。
  3. 不需要重定向。

我认为你想要的是这样的:

DocumentRoot /doc_root/

RewriteCond %{HTTP_HOST} ^project1\.example\.com$
RewriteRule ^/(.*)$ /project1/$1 [NC,PT]

如果您确实想要重定向,请考虑:

RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^/project1/(.*)$ project1.example.com/$1 [NC,R]

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多