我目前正在将我的网站从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]
答案 0 :(得分:12)
nginx不支持.htaccess
(请参阅here:"你不能这样做。你不应该。如果你需要.htaccess,你'可能做错了。" )。
你有两个选择(据我所知):
.htaccess
导入nginx.conf
(也许htaccess to nginx converter可以帮助您)答案 1 :(得分:2)
免责声明:我是 nginx的htaccess 的作者,该软件是付费软件。没有恶意。
在过去的几年中,我创建了 plugin which implements htaccess behaviour into nginx ,尤其是诸如RewriteRule
,Allow
和Deny
之类的东西,这对于网络安全。该插件可以在我自己的生产环境中正常使用。
我完全同意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。