带有dir的Apache虚拟主机uri

时间:2013-02-13 13:38:53

标签: php apache vhosts

我无法通过子目录在url上设置虚拟主机... 我需要在这样的地址上运行我的项目:

http://www.projects.loc/project1/ 这应该模仿安装在地址就像

的网络服务器上

http://www.someServer.com/projects/project1/

我需要将重定向调整为“/”,以便返回www.projects.loc/project1/

我在hosts.txt中的

127.0.0.1       www.projects.loc

启用了vhosts,httpd-vhosts.conf如下所示:

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "D:/Projects/Project1/public/"         
    ServerName  www.projects.loc/project1/
</VirtualHost>

我错过了什么?

编辑: .htaccess看起来像这样:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php [NC,L]

应用程序在干净域上正常运行,但我无法将其配置为 在domain.com/some_dir /

上运行

修改
解决了这个!

NameVirtualHost *:80   

   <Directory "D:/Projects"> 
      allow from all
   </Directory>

    <VirtualHost *:80>
        DocumentRoot "D:/Projects"      
        ServerName  www.projects.loc/

        Alies /project1  /Project1/public/
    </VirtualHost>

注意:这是仅适用于开发环境的最小配置,
检查来自@ M-z的已接受的ansler,了解生产环境的完整细节。

1 个答案:

答案 0 :(得分:1)

可能你已经解决了这个问题。无论如何,我今天看起来类似的东西,因此我在这里记录解决方案:

您不想在ServerName中编写斜杠

ServerName  www.projects.loc/project1/

如果您只有一个名为“project1”的项目,您可以使用“ServerPath”轻松完成工作,您的vhost配置将如下所示:

<VirtualHost *:80>
ServerName projects.loc
ServerAlias www.projects.loc
ServerPath /project1/
DocumentRoot /PATH/public_html
ErrorLog /PATH/error_log
CustomLog /PATH/access_log combined
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory /PATH/public_html>
Options -Indexes +IncludesNOEXEC +FollowSymLinks
allow from all
</Directory>
</VirtualHost>

通过ServerPath,您可以将目录挂载到projects.loc / project1

无论如何,假设您有几个项目(project1,project2)要绑定到projects.loc / project1,projects.loc / project2等,请使用“Alias”。您的vhost配置文件应如下所示:

<VirtualHost *:80>
ServerName projects.loc
ServerAlias www.projects.loc
DocumentRoot /PATH/public_html
ErrorLog /PATH/error_log
CustomLog /PATH/access_log combined
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory /PATH/public_html>
Options -Indexes +IncludesNOEXEC +FollowSymLinks
allow from all
</Directory>

Alias /project1 "/PATH/public_html/project1"
<Directory "/PATH/public_html/project1">
DirectoryIndex index.html index.htm index.php index.php4 index.php5
Options -Indexes +IncludesNOEXEC +FollowSymLinks
allow from all
</Directory>

Alias /project2 "/PATH/public_html/project2"
<Directory "/PATH/public_html/project2">
DirectoryIndex index.html index.htm index.php index.php4 index.php5
Options -Indexes +IncludesNOEXEC +FollowSymLinks
allow from all
</Directory>
</VirtualHost>

您的应用程序位于文件夹/ PATH / public_html / project1中,然后将在projects.loc / project1中提供,您的应用程序将在projects.loc / project2等处提供放置文件夹/ PATH / public_html / project2的应用程序。

我宁愿为不同的应用程序使用不同的子域。这样做的好处是为每个子域主机提供了自己的配置文件,这也使错误和访问日志处理更容易。通过使用Alias,如果您希望按应用程序使用Alias,则配置不同的错误和访问日志会更加困难。

进一步阅读:
关于别名:http://httpd.apache.org/docs/current/mod/mod_alias.html
关于ServerPath:http://httpd.apache.org/docs/2.2/vhosts/examples.html#serverpath