Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 让Symfony2在没有app.php的情况下在GoDaddy上工作_.htaccess_Symfony - Fatal编程技术网

.htaccess 让Symfony2在没有app.php的情况下在GoDaddy上工作

.htaccess 让Symfony2在没有app.php的情况下在GoDaddy上工作,.htaccess,symfony,.htaccess,Symfony,我在GoDaddy生产服务器上安装了我的Symfony站点。当我使用url www.amcolan.info/Symphony/web/app.php/index时,它运行良好。我想让它设置为www.amcolan.info/index 我通过GoDaddy控制面板将域更改为指向文件夹amcolan/Symfony/web。它曾经指向/amcolan,其中包含我的站点的工作版本。设置好后,我安装了以下.htaccess文件: <IfModule mod_rewrite.c>

我在GoDaddy生产服务器上安装了我的Symfony站点。当我使用url 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>
这使它起了作用,尽管我怀疑不正确。我第一次尝试它时没有在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

我想我现在是一个快乐的露营者。

指数行动是没有必要的。您还可以轻松地为根路由配置任何操作

这是我在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>
DirectoryIndex app.php
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$/app.php/[QSA,L]

无需索引操作。您还可以轻松地为根路由配置任何操作

这是我在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>
DirectoryIndex app.php
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$/app.php/[QSA,L]

文档根目录应指向
web
目录和已交付的。http
web
目录中的Access应能很好地完成这项工作。@Pazi,所说的已交付,是指Symfony下载附带的代码吗?是,它与标准安装一起提供。@Pazi:它不起作用。文档根目录应该指向
web
目录和已交付的。
web
目录中的htaccess应该可以很好地完成这项工作。@Pazi,所说的已交付,是指Symfony下载附带的代码吗?是的,它是标准安装的。@Pazi:不起作用。
nopage:
    pattern:  /
    defaults: { _controller: ZetchoAmColAnBundle:Default:index }
    requirements:
        _method:  GET
DirectoryIndex app.php
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /app.php/ [QSA,L]
</IfModule>