mod_rewrite,链接,虚拟主机

时间:2012-02-13 02:05:27

标签: php apache mod-rewrite

似乎我永远不会与mod_rewrite相处...... 我是典型的情景:

homepage_one.tld/impressum.php --> domain.tld?content=impressum
homepage_one.tld/projects.php --> domain.tld?content=projects
homepage_one.tld/projects/canvas.php --> domain.tld?content=projects&project=canvas

我正在使用VMware上的Ubuntu Server Edition离线开发。这意味着,我的homepage_one测试的本地域是:_http:/// localhost:2180 / homepage_one / index.php 稍后它将是_http://homepage_one.tld。

 <Directory /var/www/homepage_one>
                RewriteEngine on
                RewriteRule ^([^/]*)\.php$ index.php?content=$1 [QSA,L]
                RewriteRule ^projects/(.*)\.php$ index.php?content=projects&project=$1 [QSA,L]
        </Directory>

所有 css / 图片链接现在都是* 已损坏* ,当我要求提供网址时:_http:// localhost: 2180 / homepage_one /项目/ canvas.php (它寻找“homepage_one / projects /canvas/style.css”而不是“homepage_one / style.css”

stackoverflow上关于此问题的大多数答案是:使用绝对链接。我试过了,但要离线测试,我的绝对链接是/homepage_one/style.css,我必须更改所有链接,一旦我发布网站。我也尝试使用html-base标签。但这没有任何作用......任何想法?

2 个答案:

答案 0 :(得分:1)

Johannes这真的是对你answer的回答:-)列出条目的传统方式是IP name name,例如

127.0.0.1  localhost mysite.vm subdomain.mysite.vm blog.mysite.vm

或其他什么。

我也发现端口转发总是很痛苦。我总是使用桥接或仅限主机的网络。我的Windows / WMware技能有点生疏,因为我放弃了大约5年前,但this VMware page描述了如果你使用VMware Workstation如何做到这一点。您可以对VMware设备执行相同操作,但必须开始调整VMX文件。正如我在博客文章中所说,我建议您阅读,我发现VBox更容易。

在桥接网络中,如果您主机NIC的MAC地址是00:23:18:dd:88:88而您的VM是08:00:27:FE:FE:FE则VMware网络驱动程序会对主机NIC进行编程响应两者但随后将08:00:27:FE:FE:FE数据包传递到VM的虚拟NIC上。因此,VM就像任何其他PC一样参与网络,并且看起来像PC /服务器到任何其他设备。我在192.168.1.0/24专用地址空间上运行所有家庭设备,所以我只是在192.168.1.192/26中为我的VM静态分配IP。

桥接和仅限主机网络的巨大优势在于您可以使用默认端口80,如果您愿意,还可以(暂时)覆盖您的myprodsite.com的DNS条目以指向您的VM,因此然后,任何绝对编码的http://myprodsite.com/ URI将在测试期间指向VM。

希望这会有所帮助: - )

答案 1 :(得分:0)

解决方案(感谢@TerryE):

Edit C:\Windows\System32\drivers\etc resp. /etc/hosts (linux)
127.0.0.1  my_homepage1.vm
127.0.0.1  my_homepage2.vm

在我的情况下,使用端口转发到不同的VM,我可以到达它们,如下所示:

my_homepage1.vm:2180 --> VM1
my_homepage1.vm:2280 --> VM2

现在我可以像在我的生产服务器上一样使用VirtualHosts,并使用绝对链接