我在我的 GoDaddy 生产服务器上安装了我的 Symfony 站点。当我使用网址 www.amcolan.info/Symphony/web/app.php/index 时,它工作正常。我希望它设置为 www.amcolan.info/index。
我通过 GoDaddy 控制面板更改了域以指向文件夹 amcolan/Symfony/web。它曾经指向 /amcolan,其中包含我网站的工作版本。完成设置后,我安装了以下 .htaccess 文件:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^/app_dev.php - [L]
RewriteRule ^/app.php - [L]
# Fix the bundles folder
RewriteRule ^bundles/(.*)$ bundles/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
RewriteRule ^(.*)$ app.php [QSA,L]
#RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>
我从该站点上的另一个相关问题中获得了代码,并根据我的目的进行了修改。最初的目的是放在 Symfony 目录中。然后我清除了生产缓存并尝试访问一个页面。它导致内部服务器错误。我的代码中是否有任何错误?您会认为 Sensio 会很好地记录这一点,因为我想 99% 的实现都必须这样做。现在我越来越苦了。
按照建议,我尝试了 Symfony 附带的以下代码:
<IfModule mod_rewrite.c>
RewriteEngine On
<IfModule mod_vhost_alias.c>
RewriteBase /
</IfModule>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
我也试过:
<IfModule mod_rewrite.c>
RewriteEngine On
#<IfModule mod_vhost_alias.c>
#RewriteBase /
#</IfModule>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
我得到了和以前一样的错误。为了确保我能够访问该目录,我向其中添加了一个 index.php 文件并且我能够访问它。
更新 2
在深入了解 goDaddy 特定问题之后,我在 goDaddy 论坛上发现一篇帖子说 RewriteEngine 已经启动。我删除了该代码而没有影响。然后我决定试试这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://www.amcolan.info/app.php/index [QSA,L]
尽管我怀疑不正确,但这让它起作用了。我在 app.php/ 之后第一次尝试没有索引。这让我进入了 symfony,但产生了一个 get 错误。这似乎是因为一个空参数,所以我添加了索引。因此,无论有人在 www.amcolan.info 之后输入什么内容,它都会进入索引。进入 Symfony 页面后,您可以导航到站点中的其他页面。所以现在我有三个新问题:
知道 Web 服务器在读取 .htaccess 文件时指向的位置吗?您会认为 /web 目录是文件所在的位置。由于仅指定 app.php 而不是完整路径是行不通的,因此一定不是这样。它会是我网站的基础吗?
www.amcolan.info重定向成功后,显示的URL为www.amcolan.info/app.php/index。我不想在 URL 中看到 /app.php,但我怀疑这不可能,因为它是实际目的地。这是一个正确的假设吗?
如何让 www.amcolan.info/somepage 转到 www.amcolan.info/app.php/somepage 而不是硬编码索引?
更新 3
我以为我被卡住了,但后来我尝试了:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php/index [QSA,L]
这样就不必使用完整的 URL,现在目标页面不再显示 app.php。我有一个新问题:仅指定 www.amcolan.info 会导致上述 get 错误。指定 www.amcolan.info/somepage 不再将我带到索引,而是到指定的页面。请继续关注,我也许可以通过更多的挖掘来解决我的最后一个问题。
更新 4
我通过将以下内容添加到我的路由文件来解决最后一个问题:
nopage:
pattern: /
defaults: { _controller: ZetchoAmColAnBundle:Default:index }
requirements:
_method: GET
我想我现在是一个快乐的露营者。