我已经在包含以下内容的.ebextensions/
文件夹中创建了一个server.config
文件,并将其部署到我的 Apache/PHP Elastic Beanstalk 实例中,但它似乎不想美化我的 URL......
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 实例的配置中启用某些内容?
这是一个愚蠢的陷阱。这些规则(如书面形式)需要放在.htaccess
而不是*.conf
文件中。
您可以在此处了解有关差异的更多信息:http://tltech.com/info/rewriterule-in-htaccess-vs-httpd-conf/
Apache根据RewriteRule或RewriteCons指令是放置在
<Directory>
块内来匹配不同的东西。值得注意的是,.htaccess 文件中的所有内容都假定在目录上下文中。因此,.htaccess 文件中的规则与块中的规则的行为方式相同,这与块外的规则行为方式不同。有了这些知识,我们只需将规则移动到
。<Directory>
块中即可修复我们的httpd.conf文件