我的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错误。它似乎是因为一个null参数,所以我添加了索引。因此,无论有人在www.amcolan.info之后输入什么,它都会进入索引。进入Symfony页面后,您可以导航到站点中的其他页面。所以现在我有三个新问题:
在读取.htaccess文件时,是否知道Web服务器指向的位置?你会认为在/ 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
我认为我现在是一个快乐的露营者。
答案 0 :(得分:1)
索引操作不是必需的。您也可以轻松配置根路由的任何操作。
这是我在GoDaddy上的完整.htaccess文件,最终有效。它仅适用于prod config(app.php),app_dev.php运行不正常,但这对我来说没问题,因为它用于生产环境。
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app.php/ [QSA,L]
</IfModule>