我正在运行MAMP堆栈并且有一些默认设置。 我一直试图避免在从MAMP中取出项目时改变任何重写条件,所以我看了一下动态大规模虚拟主机。根据我的阅读,这将允许我从MAMP Web根目录中的每个相应文件夹中提供项目作为localhost的子域。有了这个,每个项目都有自己的文档根目录。
example.localhost将成为Applications / MAMP / htdocs / example.localhost
我通过在httpd.conf中启用虚拟主机然后将以下内容添加到httpd-vhosts.conf来完成所有设置。
#
# Use name-based virtual hosting.
#
NameVirtualHost *:8888
<VirtualHost *:8888>
ServerAdmin dev@example.com
ServerName localhost
ServerAlias *.localhost
VirtualDocumentRoot /Applications/MAMP/htdocs/%0
RewriteLogLevel 3
RewriteLog "/Applications/MAMP/logs/rewrite.log"
<Directory "/Applications/MAMP/htdocs">
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
值得一提的是,我将httpd.conf中的默认端口设置为8888以避免冲突。
所以这一切都运行正常,但当我到达我的项目的任何部分,在目录中使用.htaccess文件并触发mod_rewrite时,它会执行重写并给我一个404.
通过一个简单的例子,使用.htaccess将.php添加到资源的末尾: RewriteEngine On RewriteCond%{REQUEST_FILENAME}! - f RewriteRule ^([^。] +)$ $ 1.php [NC,L]
以下网址: example.localhost / test / api / resource
应该变得像: /Applications/MAMP/htdocs/example.localhost/test/api/resource.php
取而代之的是: /Applications/MAMP/htdocs/example.localhost/example.localhost
这似乎是mod_rewrite应用文档根目录的一个问题,但我不知道如何配置它以确保文档根目录正确。我知道当应用.htaccess时,它会假设使用相对路径,但我没有使用任何前导斜杠或类似的东西。
这里重要的是我不必更改项目中的.htaccess文件,因为他们需要继续使用标准的apache设置。
我不是这些配置的专家,我在很大程度上是自学成熟的,所以任何帮助都会受到赞赏。
由于