【问题标题】:nginx configuration targeting a folder like htaccess针对像 htaccess 这样的文件夹的 nginx 配置
【发布时间】:2015-04-15 17:12:59
【问题描述】:

我正在从 Apache 迁移到 nginx,整个站点有许多 .htaccess 文件(例如 example.com/.htaccess、example.com/folder/.htaccess)。

我拥有的 .htaccess 文件的示例是:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^do_ajax\.php /wp-admin/admin-ajax.php [QSA,L]
</IfModule>
# END WordPress

和 nginx conf 等价物是这样的:

# BEGIN WordPress
rewrite ^/ajax /wp-admin/admin-ajax.php last;
# END WordPress

由于 nginx 配置进入 /etc/nginx/nginx.conf 并以所有文件而不是文件夹为目标,我可以做些什么来使其针对它所针对的特定文件夹(例如,如果上述 www 文件夹.example.com 位于 /usr/share/nginx/html/example/)?

【问题讨论】:

    标签: apache .htaccess mod-rewrite nginx configuration


    【解决方案1】:

    你需要在匹配中包含“文件夹”部分:

    rewrite ^/folder/ajax /wp-admin/admin-ajax.php last;
    

    因为这些 nginx 规则不是 每个目录 上下文。但如果您需要将它们组合在一起,您可以使用location block:

    location /folder/ {
       rewrite ^/folder/ajax /wp-admin/admin-ajax.php last;
    }
    

    如果您想将它们组合在一起,但您仍然需要在正则表达式前面加上/folder/。

    【讨论】:

    • 感谢您的回复。如果我将其设置为 folder.example.com,该文件夹位于 /usr/share/nginx/html/example/ 会怎样?我将设置其他文件夹,例如 folder2.example.com (/example2/) 等等。
    猜你喜欢
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2020-01-19
    • 1970-01-01
    相关资源
    最近更新 更多