在 Windows 上使用 WAMP 进行 PHP 开发并在 Unix 上部署-.htaccess 设置?

在 Windows 上使用 WAMP 进行 PHP 开发并在 Unix 上部署-.htaccess 设置?

所以我很确定这个问题之前有人问过,但我就是无法通过谷歌搜索找到答案 - 请随意指出正确的网站/帖子来查找答案。抱歉我的搜索能力很差... :(

我正在使用 WAMP 在 Windows 上开发一个 PHP 应用程序。这需要部署到 UNIX Web 主机。该应用程序最终将驻留在其自己的域中,例如 www.example.com,但我正在 localhost/app1 下的 WAMP 服务器上开发它,即我正在开发多个应用程序,每个应用程序都驻留在其自己的目录中。

我的问题是,我通过绝对路径引用共享资源,例如 /images/test.jpg。它们当然在我的生产服务器上运行良好,但当我尝试在本地计算机上使用它时,它无法加载这些资源,因为我正在 WAMP 中的“子目录”中运行,即 localhost/app1/,因此指向 /images/test.jpg 的链接失败。它应该映射到 localhost/app1/images/test.jpg。

我试过

重写基/app1/

/xxx/app1 目录中的 .htaccess 中的指令,但这只会导致错误:

由于可能的配置错误,请求超出了 10 次内部重定向的限制。如有必要,请使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯/

这当然是有道理的,因为现在每个对 localhost/app1/ 的调用都会重定向到 localhost/app1/,等等。

所以,我的问题是:我应该如何设置我的应用程序,以便我可以在本地主机上使用 WAMP 以及在生产主机上运行相同的代码?我意识到我可能在这里搞错了方向,应该完全不同地构建它,因此,在这方面任何正确的方向的指示都将不胜感激!

提前致谢!

答案1

看到这个那么问题来了并阅读重写库以确保您理解它。我只会在服务器级别使用常规重写规则:

RewriteEngine On
RewriteRule ^/images(.*) /app/images$1  

mod_rewrite如果需要,页面上有更多详细信息和示例。这种方法的缺点是必须有多个规则来重写所需的所有内容,在这种情况下,您可以尝试以下方法:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/app
RewriteRule ^/(.*) /app/$1  

如果您对重写规则有疑问(我经常遇到),您可以暂时启用RewriteLog以进行调试。另一个可能有用的项目是 HTML<BASE>标签有时更容易使用。

答案2

该应用程序最终将存在于其自己的域中,例如 www.example.com,但我在 localhost/app1 下的 WAMP 服务器上开发它,即

这就是你的问题!

我在 Windows 上开发的方式(使用 WampDeveloper Pro)是:

A. 使用完全相同的域名并为网站启用本地 DNS(Windows 主机文件将域解析为 127.0.0.1)。

B. 为我的网站使用 config.inc.php 文件,该文件使用变量或常量将域名定义为 dev.example.com,并在生产中定义为 www.example.com。同时定义所有完整路径。

因此这个问题就彻底消失了。

相关内容