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