【问题标题】:PHP project needs placement in www root-how to fix with .htaccess?PHP 项目需要放置在 www 根目录中 - 如何使用 .htaccess 修复?
【发布时间】:2012-03-11 17:14:33
【问题描述】:

我必须处理其他人的几个 PHP 项目,这些项目的路径是硬编码的,以至于我必须一次将每个项目放在我的 /var/www/ 目录中才能运行它 - 而不是能够它在自己的子目录中,例如/var/www/project_name

有没有办法解决这个问题,所以我不必将每个项目直接放在我的 webroot 目录中?这样做让我一次只能使用本地 LAMP 服务器处理一个项目!

编辑:为了以“VirtualHost”的方式进行操作,我的ServerName 会是project_name 吗?我只尝试了project_name,但这似乎不起作用。

【问题讨论】:

  • 好的,在编辑正确的 hosts 文件后,它可以与 vhosts project_name 一起使用。谢谢大家!

标签: php .htaccess redirect path lamp


【解决方案1】:
  • 添加

类似这样的东西到你的hosts 文件

localproject1  127.0.0.1
localproject2  127.0.0.1
...
  • 在 apache 中为每个服务器创建一个虚拟服务器,每个服务器都有自己的 webroot (以及更重要的)日志文件。

  • 通过http://localproject1http://localproject2、...浏览它们

【讨论】:

  • 嗯..根本没想过使用虚拟主机!谢谢,我会试一试!
  • @Eugen: 引用man 5 hosts“对于每个主机,应有一行包含以下信息:IP_address canonical_hostname [aliases...]”,换句话说,正确的语法是127.0.0.1 localhost localproject1 localproject2,但一般建议是一个很好的。
  • Eugen 省略但暗示的一点是您可以在每个虚拟主机配置中分配单独的文档根。
  • @TerryE 我脑子里是 WAMP,而不是 LAMP - 抱歉。我写了“每个都有自己的 webroot”,我认为这很清楚
【解决方案2】:

基本上你有很多选择,如果你想为每个项目使用不同的 URL,你需要编辑你的 hosts 文件,启用 NameVirtualHost 并使用 VirtualHost。 另一种方法是将每个项目放在 /var/www/project_name 中,并在每个文件夹的 .htaccess 中设置重写基础,如下所示,这样您就可以使用绝对 URL 并且项目不会中断

RewriteEngine On
RewriteBase /var/www/project_name

【讨论】:

  • 如果我理解正确的话,使用虚拟主机我将使用http://localproject1 作为我的 URL,使用.htaccess 方式我将使用http://localhost/project1。这只是一个偏好问题,对吧?
  • @Alfonso - 坏建议:阅读RewriteBase documentation。参数在 URI 命名空间而不是文件命名空间中,因此在这种情况下,基数应该是 /var/www/.htaccess 中的“/”,如果是 /var/www/project_name/.htaccess 中的 /project_name
  • 这是偏好,我更喜欢在每个项目中使用不同的 URL,因此您可以确定,如果您将网站移至不同的服务器,它不会中断。 @TerryE 谢谢,我总是对此感到困惑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 2011-08-22
  • 2016-07-05
  • 1970-01-01
  • 2011-08-12
相关资源
最近更新 更多