如何在Nginx中使用.htaccess文件?

fjaof16o  于 2022-11-02  发布在  Nginx
关注(0)|答案(5)|浏览(594)

我正在将我的网站从Apache迁移到nginx,但是我的.htaccess文件不工作。我的网站在/usr/share/nginx/html/mywebsite文件夹中。如何在我的nginx服务器中使用.htaccess
这是我的.htaccess文件:

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

w8f9ii691#

Nginx不支持.htaccess(参见here:* “你不能这么做。你不应该这么做。如果你需要.htaccess,你可能做错了。"*)。
你有两个选择(据我所知):

1aaf6o9v

1aaf6o9v2#

  • 披露:我是htaccess for nginx的作者,它现在是开源软件。*

在过去的几年里,我创建了一个**plugin which implements htaccess behaviour into nginx**,特别是像RewriteRuleAllowDeny这样的插件,它们对于网络安全来说是至关重要的。这个插件在我自己的生产环境中使用没有问题。
我完全同意nginx的效率和速度,以及为什么他们没有实现htaccess。但是,想想看。如果你使用nginx和htaccess,你不会让它变得更糟。你仍然保持了nginx的出色性能,而且你可以在一个web服务器上毫不费力地驱动你的传统设备。

jqjz2hbq

jqjz2hbq3#

这在nginx中是不被正式支持的。如果你需要这种功能,你需要使用Apache或者其他支持它的http服务器。
也就是说,official nginx reasoning是有缺陷的,因为它把用户想做的和它做的方式混为一谈了。例如,nginx可以很容易地每10秒/分钟左右检查一次目录,或者它可以使用inotify和类似的机制。这将避免在每次请求时检查它的需要......但是知道这一点对你没有帮助。:)
您可以通过编写一个脚本来绕过这个限制,该脚本将等待nginx配置文件出现,然后将它们复制到/etc/nginx/conf.d/。然而,这可能会带来一些安全隐患-因为nginx中没有对.htaccess的本地支持,也不支持限制配置文件中允许的配置指令。

carvr3hs

carvr3hs4#

“* 是否有nginx方法使用正则表达式进行批量重定向,而不会降低响应时间。*”
只需使用myphpmyadmin编辑您的数据库。
1.打开myphpmyadmin选择您的数据库,然后找到“yourprefix_Posts”表。
1.打开它,然后单击“搜索”选项卡,再单击“查找和替换"。
1.在下拉菜单中选择“post_content
1.在“查找”字段中,键入要更改的URL:“website.com/oldURL“中找到。
1.在“替换”字段中,键入新的URL:“website.com/newURL“。(要使用正则表达式,请勾选“正则表达式”框。)

**注意:**您只需将“Replace”字段留空即可测试此功能。
总是备份数据库之前作出改变。这可能听起来可怕,但它真的不是。它超级简单,可以用来快速取代只是一件小事。

guicsvcw

guicsvcw5#

使用config文件是一种选择,但是.htaccess文件的酷之处在于它为web开发者提供了一种方法,让他们在没有root权限的情况下控制服务器的设置。nginx上似乎没有类似的东西,这真实的的很令人失望。
我理解它在apache上的设置方式如何降低响应时间,但希望能有一个nginx的方式来做同样的事情,而不会影响性能...至少有一种方式来做rewrites与regex的url,如果没有别的。

相关问题