2011-05-11 69 views
0

我的问题是这样的: - 我现在在Apache服务器前面使用nginx意味着我所有的网站 - 我在.htaccess文件中的所有重写都很完美,除了1和以上到目前为止没有人设法给我一个解决方案nginx忽略Apache重写指令

这是的.htaccess规则

------------- 
    RewriteCond %{THE_REQUEST} ^.*/index\.(html|htm)\ HTTP/ 
    RewriteRule ^(.*)index\.(html|htm)$ http://%{HTTP_HOST}/$1 [R=301,L] 
------------- 

这将执行以下操作: - 它从www.domain.com/index.html到301 HTTP代码重定向www.domain.com - 它需要index.html和index.htm

现在的事情是,这之前工作安装nginx和迄今为止工作index.htm ..它正确地重定向。 但是index.htm不存在。

我尝试了另一种方式,发现如果文件存在,重定向将不会发生。

我发现的另一个奇怪的事情是:我也有从Google安装的mod_pagespeed,并且当我通过www.domain.com/index.html访问URL时,不会重写为/的URL, mod_pagespeed是...非活动的..意味着没有变化发生在源例如....像这个URL不是来自相同的正常请求。

Btw..in SSH,当我发出命令nginx的我得到这样的:

nginx: [warn] duplicate MIME type "text/html" in /etc/nginx/nginx.conf:30 
nginx: [emerg] bind() to 111.111.111.111:80 failed (98: Address already in use) 
nginx: [emerg] bind() to 111.111.111.111:80 failed (98: Address already in use) 
nginx: [emerg] bind() to 111.111.111.111:80 failed (98: Address already in use) 
nginx: [emerg] bind() to 111.111.111.111:80 failed (98: Address already in use) 
nginx: [emerg] bind() to 111.111.111.111:80 failed (98: Address already in use) 
nginx: [emerg] still could not bind() 

111.111.111.111 - 伪造IP

我看了重复MIME ..找不到它在那里和其余的绑定的东西... 不是一个线索。

如果你们有线索,我会很乐意与你分享一杯虚拟的啤酒,以获得一个很好的信息。

谢谢

+0

首先,nginx尝试侦听已经被Apache使用的80端口。如果你想让nginx成为前端,你应该将apache移动到另一个端口。 – 2011-05-11 14:38:49

+0

感谢您的提示:)我如何做到这一点,而不打破东西?编辑httpd.conf?我知道那里有港口。 – CrazyDogster 2011-05-11 14:47:49

+0

但是,以上是最不重要的清单..我更关心的是重做,它没有做它应该做的。 – CrazyDogster 2011-05-11 14:48:30

回答

-1

这可能有帮助。

RewriteCond %{THE_REQUEST} ^.*/index\.(html|htm)\ HTTP/ [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^(.*)index\.(html|htm)$ http://%{HTTP_HOST}/$1 [R=301,L] 
+0

nope :(就像那个URL ..完全忽略.htaccess一样。如果我在.htaccess中写了一些错误的行并且访问那个URL,那么这个文件就会显示出来..如果我检查其他的URL,它们会以502失败。 – CrazyDogster 2011-05-11 15:25:50