我无法通过子目录在url上设置虚拟主机... 我需要在这样的地址上运行我的项目:
http://www.projects.loc/project1/
这应该模仿安装在地址就像
http://www.someServer.com/projects/project1/
我需要将重定向调整为“/”,以便返回www.projects.loc/project1/
:
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,了解生产环境的完整细节。
答案 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