【发布时间】:2014-11-26 15:00:48
【问题描述】:
我刚刚使用 ekino-wordpress-bundle 在我的 wordpress 4.0 上安装了 symfony2。我完全按照这里的说明进行操作:https://github.com/ekino/EkinoWordpressBundle
在我的本地主机上一切正常,一个香草 MAMP,但是,当我推送到 openshift(也是一个香草 php 设备)时,一切都崩溃了,我收到内容编码错误。
我已尝试一一调整更改并设法将问题缩小到 .htaccess 文件。
这是来自 wordpress 的 .htaccess 文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /webfront-interiorpediadev/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /webfront-interiorpediadev/index.php [L]
</IfModule>
# END WordPress
这是破坏 wordpress 的 symfony 的 .htaccess,但如果我改回 htaccess,我会像以前一样恢复“只有 wordpress,没有 symfony”的东西:
DirectoryIndex index.php
<IfModule mod_autoindex.c>
IndexIgnore /symfony
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .? - [L]
# Rewrite all other queries to the front controller.
RewriteRule .? %{ENV:BASE}/index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /index.php/
</IfModule>
</IfModule>
我不知道出了什么问题,就像在我本地的 MAMP 中一样,一切都与有故障的 .htaccess (wordpress+symfony) 完美配合。有人能帮我指出正确的方向吗?
P.S:我已经检查了我的 MAMP 和 openshift 上的 LoadModule,并且 mod_rewrite 已打开。我不知道其余的,但我认为区别只是 mod_rewrite 和 autoindex
编辑:有问题的网址是:http://webfront-interiorpediadev.rhcloud.com/ 请注意,所有其他子网址都可以正常工作,例如:http://webfront-interiorpediadev.rhcloud.com/wp-login 或 http://webfront-interiorpediadev.rhcloud.com/symfony/web
【问题讨论】:
-
看起来您的本地安装设置了所有正确的
ENV:*。 -
但下面的所有内容都不会出现编码错误,请参阅编辑
-
我怀疑最后的重写规则
RewriteRule .? %{ENV:BASE}/index.php [L]。虽然我从未尝试过您正在运行的环境,但我建议您使用此字符串:1. 将其移至前三行或 2. 将其删除(我敢打赌这会解决问题。)希望它有所帮助。
标签: php apache .htaccess symfony openshift