如何通过HTTP / 2在htaccess中启用mod_redirect

问题描述 投票:-1回答:1

我已经修改了我的Debian 9安装(Apache 2.4.25)以允许HTTP / 2支持。

我已经成功地在线检查了它,并且页面[[do可以使用,但是问题在于在.htaccess中执行的重定向,例如将site.com/index.php/brands/mybrand映射到一个不错的URL (site.com/brands/mybrand)。它根本不会发生。这是一个Codeigniter设置。

    问题的步骤似乎是当我禁用当前模块(a2dismod php7.2mpm_prefork)并且启用了支持HTTP / 2的mpm模块(a2enmod mpm_event,但我也尝试过mpm_worker)时。
  • 那时我收到“找不到文件”(404错误)
  • 通过恢复这两个步骤,我恢复了正常(当然没有HTTP / 2)
  • 下面的mod_rewrite.c条件是否通过加载mpm_worker模块而无效?如果是这样,我该如何更换?

    编辑:详细的日志向我显示此错误:AH01071:得到错误“主脚本未知\ n”,引荐来源:https://sitename.com/brands/

    我的.htaccess(在index.php所在的品牌目录中)与以前的配置配合良好,是:

    <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </IfModule> <IfModule mod_headers.c> <FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch> </IfModule> IndexOptions +Charset=UTF-8

    我的/etc/apache2/sites-enabled/default-ssl.conf相关内容包括:

    <VirtualHost _default_:443> # even without enabling here h2c or h2 I get the error Protocols http/1.1 <Directory "/var/www/html"> Options Indexes FollowSymLinks MultiViews AllowOverride All # since apache 2.4 Require all granted </Directory> </VirtualHost>

    注意:我之前运行的用于启用所需其他模块的其他命令如下。我无需进行任何操作即可恢复到正常的工作(非HTTP / 2)配置:

    apt-get install php7.2-fpm a2enmod proxy_fcgi setenvif a2enconf php7.2-fpm

  • apache .htaccess mod-rewrite debian http2
    1个回答
    0
    投票
    您尚未正确配置PHP-FPM。通过说a2disconf php7.2-fpm禁用该php-fpm配置。并在httpd.conf文件中添加以下内容,这应该可以工作:

    <FilesMatch "\.php$"> SetHandler "proxy:fcgi://localhost:9000" </FilesMatch> ProxyErrorOverride On

    重新启动Apache和PHP-FPM(可能不需要重新启动PHP-FPM,但是必须重新启动Apache)。立即启用HTTP / 2,可能应该可以使用。
    © www.soinside.com 2019 - 2024. All rights reserved.