Apache VirtualHost安装程序始终不会';行不通

Apache VirtualHost安装程序始终不会';行不通,apache,mamp,virtualhost,hosts,Apache,Mamp,Virtualhost,Hosts,我正在尝试为mampstack(而不是MAMP)设置虚拟主机。这就是我到目前为止所做的: 在我的httpd.conf文件中,我已经检查了 Listen 8080 这是正确的(我正在收听端口8080,而不是80)。 然后我取消了注释:在我的httpd.conf文件中包含conf/extra/httpd vhosts.conf 在我的主机文件中,我添加了以下内容:127.0.0.1 mext pst.local 在httpd vhosts.conf中,我添加了: NameVirtualHost

我正在尝试为mampstack(而不是MAMP)设置虚拟主机。这就是我到目前为止所做的:

在我的httpd.conf文件中,我已经检查了

Listen 8080
这是正确的(我正在收听端口8080,而不是80)。
然后我取消了注释:
在我的
httpd.conf
文件中包含conf/extra/httpd vhosts.conf

在我的主机文件中,我添加了以下内容:
127.0.0.1 mext pst.local

httpd vhosts.conf
中,我添加了:

NameVirtualHost *:8080
<VirtualHost *:8080> 
    DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs"
    ServerName                127.0.0.1
    ServerAlias               localhost
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN localhost
</VirtualHost>

<VirtualHost *:8080> 
    DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs/mext-pst-dashboard/web"
    ServerName mext-pst.local
    ServerAlias mext-pst.local
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN mext-pst.local
    RewriteEngine on
    RewriteCond %{SERVER_PORT} ^80$
    RewriteRule ^ http://%{HTTP_HOST}:8080%{REQUEST_URI} [P]
</VirtualHost>

当我转到
http://mext-pst.local:8080/index.php
它可以工作…

将8080更改为默认值80。但是如果你想让你的网站在8080上运行,那么你必须使用它。另一种解决方案可能是重写url,即当服务器获得url时,它会使用端口号(8080)重写它

首先,将listen8080更改为listen80,因为您希望您的应用程序只能通过http访问。 在http-vhost.conf文件中放入以下行(当然是在删除以前的更改之后)。在以下配置中,您的DefaultHttpFolder表示默认http文件夹。你可能已经改变了。因此,请根据您的系统进行更正

<VirtualHost *:80> 
   DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs/yourDefaultHttpFolder"
   ServerName                127.0.0.1
   ServerAlias               localhost
   SetEnv APPLICATION_ENV    development
   SetEnv APPLICATION_DOMAIN localhost

   <Directory /Applications/mampstack-5.4.20-0/apache2/htdocs/yourDefaultHttpFolder>
      RewriteEngine on
      RewriteCond %{SERVER_PORT} ^80$
      RewriteRule ^ http://%{HTTP_HOST}:8080%{REQUEST_URI} [P]
   </Directory>

</VirtualHost>

<VirtualHost *:8080> 
    DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs/mext-pst-dashboard/web"
    ServerName mext-pst.local
    ServerAlias mext-pst.local
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN mext-pst.local       
 </VirtualHost>

DocumentRoot“/Applications/mampstack-5.4.20-0/apache2/htdocs/yourDefaultHttpFolder”
服务器名127.0.0.1
服务器别名本地主机
SetEnv应用程序\环境开发
SetEnv应用程序\域本地主机
重新启动发动机
重写cond%{SERVER_PORT}^80$
重写规则^http://%{http_HOST}:8080%{REQUEST_URI}[P]
DocumentRoot“/Applications/mampstack-5.4.20-0/apache2/htdocs/mext pst dashboard/web”
ServerName mext-pst.local
ServerAlias mext-pst.local
SetEnv应用程序\环境开发
SetEnv应用程序\u域mext-pst.local

此配置在我的服务器上运行,当我尝试使用80访问时,它会将URL重写到我的8080端口,我会看到该文件夹的内容,不是默认的索引页。

您必须将端口更改为*:80,而且如果您要使用其他名称,那么服务器名必须确保在httpd.conf中使用名称virtualhost*:80。

因为您没有在端口上侦听
80
,在没有端口的情况下访问URL时出现错误似乎是正确的结果,对吗

当您转到端口
8080
时,您将得到一个
代理错误。您确定端口
8080上没有运行其他软件,或者您的浏览器没有输入代理吗
Apache
不会给出代理错误。我怀疑这个错误来自其他地方


关于您的配置,我不太确定您想要实现的目标是什么,但是,如果您试图在进入
localhost:8080
时获得一些文档,以及在进入
mext pst.local:8080
时获得另一组文档,那么您几乎可以做到这一点,
NameVirtualHost*:8080
是正确的,需要在那里,删除不需要的重定向行(除非我的假设是错误的).

您必须更改Apache的端口或使用mod_proxy和
ProxyPass/http://localhost:8080/ ProxyPassReverse/http://localhost:8080/
。您的httpd.conf中的'take-up-NameVirtualHost*:80'是什么意思?我已将8080改为80(参见主题帖子),但是我只得到localhost index.phpOk,这是考虑配置时的预期结果。请阅读有关apache mod_重写模块的信息。这是一个动态更改请求URL的模块。我阅读了有关mod_rewrite模块的内容,但我不知道如何执行此操作,您能否发布一些代码(示例)来帮助我完成此操作?我已将mod_rewrite添加到上面的帖子中。我已更新了begin帖子,但仍有一些困难。我做错了什么?
<VirtualHost *:80> 
   DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs/yourDefaultHttpFolder"
   ServerName                127.0.0.1
   ServerAlias               localhost
   SetEnv APPLICATION_ENV    development
   SetEnv APPLICATION_DOMAIN localhost

   <Directory /Applications/mampstack-5.4.20-0/apache2/htdocs/yourDefaultHttpFolder>
      RewriteEngine on
      RewriteCond %{SERVER_PORT} ^80$
      RewriteRule ^ http://%{HTTP_HOST}:8080%{REQUEST_URI} [P]
   </Directory>

</VirtualHost>

<VirtualHost *:8080> 
    DocumentRoot "/Applications/mampstack-5.4.20-0/apache2/htdocs/mext-pst-dashboard/web"
    ServerName mext-pst.local
    ServerAlias mext-pst.local
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN mext-pst.local       
 </VirtualHost>