2012-02-13 54 views
-1

看来,我永远不会与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 

我发展下线,使用Ubuntu服务器版一个VMware。这意味着,我的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://本地主机:2180/homepage_one /项目/ canvas.php (它看起来对“homepage_one/项目 /canvas/style.css”,而不是“homepage_one/style.css文件”

在计算器有关这一问题的

最答案:使用绝对链接我试了一下,但离线测试,我的绝对链接将是/homepage_one/style.css,我将不得不改变所有链接,一旦我发布网站。我也尝试使用html-base标签。但是,这不工作eigther ....任何想法?

+0

它看起来像你有更多的重写规则。所以,请张贴它们。 – ThinkingMonkey 2012-02-13 02:15:42

+0

不,就是这样。其实http:// localhost:2180/homepage_one/projects.php工作完美。我只有附加目录的问题,当我使用2个参数,因为我的浏览器不知道这个目录只是“假” – 2012-02-13 02:21:18

+0

添加另一个重写规则指向链接文件,如图像和样式表正确的目录。 所以,如果你有: 'homepage_one.tld /项目/ canvas.php - >使用domain.tld含量=项目及项目= canvas' 地址: 'homepage_one.tld /项目/([^/.]+ ).css - > domain.tld/path/to/your/css/$ 1.css' 这可能不是100%正确的,因为我已经设定好了。 请仔细阅读:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html – Erik 2012-02-13 05:58:05

回答

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 
在我的情况

,使用端口转发到不同的虚拟机,我可以联系他们,如下:

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

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

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更容易。

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

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

希望这有助于:-)

+0

puh ...这完全有所帮助。我从未配置过桥接网络;实际上我很高兴没有让端口转发工作到我的虚拟服务器。谢谢,我想我会在周末试试这个,所以我不必使用'总痛苦'端口转发;) – 2012-02-14 19:44:17

+0

如果它完全有助于+1或打勾可能是不错的;-) – TerryE 2012-02-14 20:18:24