配置 MAMP 以将 Htdocs 中的每个目录视为 Apache 中的根目录 mod_redirect
Configure MAMP to treat each directory in Htdocs as Root in Apache mod_redirect
问题是当使用MAMP进行本地开发时,.htaccess
文件需要有所不同,RewriteBase
需要指定特定站点的子目录(如图here on SO).
有没有办法配置 MAMP MAMP/conf/apachehttpd.conf
以便每个虚拟站点都有自己的 "root"?
更新
获得有关虚拟主机的线索后:
已更新 /etc/hosts
文件以包含:
127.0.0.1 ClientSite.localhost
取消注释行:
`#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf`
在 /Applications/MAMP/conf/apache/httpd.conf
.
在 /Users/myname/Sites/
中有一个名为 ClientSite
的目录。
这是/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
内容:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName localhost
ServerAlias *.localhost
VirtualDocumentRoot /Users/myname/Sites/%0
RewriteLogLevel 3
RewriteLog "/Applications/MAMP/logs/rewrite.log"
<Directory /Users/myname/Sites>
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
重新启动 MAMP 服务器(甚至 运行 dscacheutil -flushcache
)。
当浏览器指向 ClientSite.localhost
它 returns a 404
: The requested URL / was not found on this server.
so that each virtual site gets it's own "root"?
您需要使用VirtualDocumentRoot
。
这就是我在 /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
文件中的 MAMP
上使用它的方式:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName localhost
ServerAlias *.localhost
VirtualDocumentRoot /Users/admin/htdocs/%0
RewriteLogLevel 3
RewriteLog "/Applications/MAMP/logs/rewrite.log"
<Directory /Users/admin/htdocs>
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
注意 VirtualDocumentRoot /Users/admin/htdocs/%0
指令。这使得每个虚拟站点的根目录为:
VirtualDocumentRoot /Users/admin/htdocs/localhost
VirtualDocumentRoot /Users/admin/htdocs/dev.localhost
VirtualDocumentRoot /Users/admin/htdocs/client2.localhost
等等
然后只需在 /Users/admin/htdocs/
中为每个如上命名的站点创建一个目录,例如:
dev.localhost
client2.localhost
在此过程中删除(或重命名)任何 .htaccess
文件 - 一旦网站确认可通过 url 访问,例如:http://client2.localhost
、.htaccess
文件应正常运行不出所料。
还要确保在 /etc/hosts
文件中有如下条目:
127.0.0.1 client2.localhost
每个 URL 有问题。
问题是当使用MAMP进行本地开发时,.htaccess
文件需要有所不同,RewriteBase
需要指定特定站点的子目录(如图here on SO).
有没有办法配置 MAMP MAMP/conf/apachehttpd.conf
以便每个虚拟站点都有自己的 "root"?
更新
获得有关虚拟主机的线索后:
已更新 /etc/hosts
文件以包含:
127.0.0.1 ClientSite.localhost
取消注释行:
`#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf`
在 /Applications/MAMP/conf/apache/httpd.conf
.
在 /Users/myname/Sites/
中有一个名为 ClientSite
的目录。
这是/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
内容:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName localhost
ServerAlias *.localhost
VirtualDocumentRoot /Users/myname/Sites/%0
RewriteLogLevel 3
RewriteLog "/Applications/MAMP/logs/rewrite.log"
<Directory /Users/myname/Sites>
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
重新启动 MAMP 服务器(甚至 运行 dscacheutil -flushcache
)。
当浏览器指向 ClientSite.localhost
它 returns a 404
: The requested URL / was not found on this server.
so that each virtual site gets it's own "root"?
您需要使用VirtualDocumentRoot
。
这就是我在 /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
文件中的 MAMP
上使用它的方式:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
ServerName localhost
ServerAlias *.localhost
VirtualDocumentRoot /Users/admin/htdocs/%0
RewriteLogLevel 3
RewriteLog "/Applications/MAMP/logs/rewrite.log"
<Directory /Users/admin/htdocs>
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
注意 VirtualDocumentRoot /Users/admin/htdocs/%0
指令。这使得每个虚拟站点的根目录为:
VirtualDocumentRoot /Users/admin/htdocs/localhost
VirtualDocumentRoot /Users/admin/htdocs/dev.localhost
VirtualDocumentRoot /Users/admin/htdocs/client2.localhost
等等
然后只需在 /Users/admin/htdocs/
中为每个如上命名的站点创建一个目录,例如:
dev.localhost
client2.localhost
在此过程中删除(或重命名)任何 .htaccess
文件 - 一旦网站确认可通过 url 访问,例如:http://client2.localhost
、.htaccess
文件应正常运行不出所料。
还要确保在 /etc/hosts
文件中有如下条目:
127.0.0.1 client2.localhost
每个 URL 有问题。