如何将子文件夹别名或重写为域

问题描述 投票:0回答:1

我有这样的文件夹结构

/
/project1

我通常在一个域(example.com)中使用它,但现在我想将它用作sepreate域(project1.example.com),我正在使用apache virtualhost。我已成功设置,但链接上出现了一些问题。 project1中的所有超链接都是包含“project1”子文件夹的路径(例如project1 / image / pic.jpg)。我这样设置

DocumentRoot /doc_root/
Alias /project1 /doc_root/project1/
Alias / /doc_root/project1

RewriteRule /project1/(.*) /$1 [R]

问题是当我重写干净网址时,例如example.com/project1/post?id=1 => project1.example.com/post/1 With

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个回答
0
投票

这里有几个问题:

  1. Alias规则看起来不正确并且令人困惑。
  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]
© www.soinside.com 2019 - 2024. All rights reserved.