这实际上不是我的专业领域,但是我刚刚遵循了有关如何使用vhost_alias_module
的指南,以避免必须为每个项目创建虚拟主机,而是将每个请求都指向{{1} },http://*.test
:https://www.sitepoint.com/set-automatic-virtual-hosts-nginx-apache/
启用它非常容易,这就是我的httpd-vhosts.conf的样子:
/Users/powerbuoy/Sites/$DOMAIN_NAME
为避免将每个域名都添加到UseCanonicalName Off
<VirtualHost *:80>
ServerName vhosts.fqdn # NOTE: This wasn't explained in the guide so I left it as it was there,doesn't seem to make a difference what it is?
ServerAlias *.test
ServerAdmin webmaster@localhost
VirtualDocumentRoot /Users/powerbuoy/Sites/%1
<Directory ~ "/Users/powerbuoy/Sites/.*">
# Not sure all of these are needed..?
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
ErrorLog "/private/var/log/apache2/sleek-error"
CustomLog "/private/var/log/apache2/sleek-access" common
</VirtualHost>
,我遵循了另一条指南:https://passingcuriosity.com/2013/dnsmasq-dev-osx/,我所做的只是/etc/hosts
,请在brew install dnsmasq
上添加一行:{{ 1}},最后在/usr/local/etc/dnsmasq.conf
中创建一个包含address=/test/127.0.0.1
的文件。
重启后也可以正常工作。 但是,在设置了所有站点,安装了WordPress等之后,我意识到/etc/resolver/test
已经停止工作:/现在,我不确定到底哪里出了问题,但是我100%确保启用了mod_rewrite(nameserver 127.0.0.1
,还有更多信息告诉了我)。
我了解到,当您使用mod_rewrite
时,phpinfo()
变量实际上不是站点根目录吗?但这真的会影响VirtualDocumentRoot
吗?
这是我的DOCUMENT_ROOT
(这是标准的WordPress之一):
mod_rewrite
就像我说的那样,访问.htaccess
很好,访问<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
会立即产生404。
这有什么问题吗?
编辑:我在macOS Catalina 10.15.1 btw上。使用Apache / 2.4.41(已预装)
Edit2:我试图在我的.htaccess文件中放一堆垃圾,以查看是否完全在使用它,但是什么也没有发生,因此似乎甚至没有读取.htaccess文件。
Edit3:我在sitename.test
中注意到了这一点:
sitename.test/any-url/
将其更改为etc/apache2/httpd.conf
可以解决我的问题。我敢肯定,尽管改变它是一个可怕的主意,所以我很想知道是否有更好的解决方案。