如何在nginx中使用.htaccess文件

时间:2016-03-03 08:18:39

标签: apache .htaccess mod-rewrite nginx

我目前正在将我的网站从Apache迁移到nginx,但我的.htaccess文件无效。我的网站位于/usr/share/nginx/html/mywebsite文件夹中。如何在.htaccess服务器中使用nginx

这是我的.htaccess文件:

RewriteEngine on
RewriteRule video/watch/([a-zA-Z0-9_@$*-]+)/?$ "videos-single.php?id=$1" [NC]

3 个答案:

答案 0 :(得分:12)

nginx不支持.htaccess(请参阅here"你不能这样做。你不应该。如果你需要.htaccess,你'可能做错了。" )。

你有两个选择(据我所知):

答案 1 :(得分:2)

免责声明:我是 nginx的htaccess 的作者,该软件是付费软件。没有恶意。

在过去的几年中,我创建了 plugin which implements htaccess behaviour into nginx ,尤其是诸如RewriteRuleAllowDeny之类的东西,这对于网络安全。该插件可以在我自己的生产环境中正常使用。

我完全同意nginx的效率和速度,以及为什么他们没有实现htaccess。 但是,请考虑一下。如果您使用的是nginx加htaccess,就不会更糟。您仍然可以保持Nginx的出色性能,并且可以轻松地在一台Web服务器上驱动旧设备。

答案 2 :(得分:1)

nginx不正式支持此功能。如果您需要这种功能,则需要使用Apache或其他支持它的http服务器。

也就是说,official nginx reasoning是有缺陷的,因为它使用户想要用完成的方式进行融合。例如,nginx可以仅每10秒/分钟左右轻松地检查目录,或者可以使用inotify和类似的机制。这样可以避免在每个请求上都对其进行检查...但是知道这对您没有帮助。 :)

您可以通过编写脚本来解决该限制,该脚本将等待nginx配置文件出现,然后将其复制到/etc/nginx/conf.d/。但是,这可能会带来一些安全隐患-由于nginx中没有对.htaccess的本地支持,因此也没有支持限制配置文件中允许的配置指令。 YMMV。