Elastic Beanstalk中的RewriteRule不起作用

时间:2017-11-08 12:55:27

标签: .htaccess amazon-web-services mod-rewrite elastic-beanstalk httpd.conf

我在server.config文件夹中创建了一个.ebextensions/文件,其中包含以下内容,并将其部署到我的Apache / PHP Elastic Beanstalk实例中,但它似乎并不想美化我的网址...

files:
"/etc/httpd/conf.d/ssl_rewrite.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
        RewriteEngine On

        RewriteRule    ^(.*)index\.php$ /$1                 [R=301,NC]
        RewriteRule    ^terms$          /tac.php            [NC,L]
        RewriteRule    ^info$           /information.php    [NC,L]
        RewriteRule    ^visit$          /visit.php          [NC,L]

看起来很简单,但是例如mysite.com/terms会产生404(而mysite.com/tac.php可以正常工作)。

我做过一些愚蠢的事情,我只是没有看到(似乎很可能),或者我是否需要在我的EB实例配置中启用某些内容?

1 个答案:

答案 0 :(得分:0)

这是一个愚蠢的陷阱。这些规则(如书面形式)需要在.htaccess而不是*.conf文件中。

您可以在此处详细了解差异:http://tltech.com/info/rewriterule-in-htaccess-vs-httpd-conf/

  

Apache根据RewriteRule或RewriteCond指令是否放在<Directory>块内而匹配不同的东西。显然,.htaccess文件中的所有内容都假定在目录上下文中。

     

因此.htaccess文件中的规则与块中的规则的行为方式相同,这与规则在块外的行为方式不同。有了这些知识,我们可以通过将规则移到<Directory>

来修复我们的httpd.conf文件