2013-05-03 37 views
1

我读过很多关于这个,但我不能让它工作,所以,我发布提问symfony1,托管,文档根目录和Apache的mod_rewrite

我有一个Symfony1项目有2个应用程序(前,管理员),托管文档根目录是public_html,这样的文件夹结构是这样的:

/public_html 
|--/apps/ 
|--/cache/ 
|........ 
|--/web/ 

支持团队告诉我,它们就不能更改文档根目录的我,所以,我必须做开始尝试.htaccess,这就是我所做的:

RewriteEngine on 
AddHandler application/x-httpd-php53 .php 
RewriteBase /web/ 

RewriteCond %{REQUEST_URI} ^/admin.php 
RewriteRule ^(.*)$ /web/admin.php/$1 [QSA,L] 

RewriteRule ^(.*)$ /web/$1 [QSA,L] 

此工程确定,但symfony的与/web生成的网址,因此,我创建了从0​​扩展的自定义类,覆盖generate函数返回是这样的:

public function generate($name, $params = array(), $absolute = false) { 
    $url = parent::generate($name, $params, $absolute); 
    $pattern = '/\/web\//'; 
    return preg_replace($pattern,'/', $url); 
} 

,这再次工程确定,我有漂亮的网址和工作正常,但是,当y试图访问http://my.domain.com/admin.php/我得到404 Page not found error和所有的管理应用程序不工作,url /admin.php/services相同的结果,总是相同的,所以,我重新创建在我的相同环境本地电脑,工作正常,但在托管它不起作用。

因此,我所做的.htaccess配置应该工作?我是否需要更多条件并重写规则以便按照我想要的方式工作?
/web文件夹中的.htaccess文件夹会影响到吗?

托管是www.bluehost.com
需要一些帮助
感谢

回答

0

如果我理解正确的话,你要重定向到/ web文件夹的所有请求。

RewriteEngine on 
AddHandler application/x-httpd-php53 .php 

RewriteCond %{REQUEST_URI} !^/web(/|$) 
RewriteRule ^(.*)$ /web/$1 [QSA] 

您的托管服务提供商可能需要此行。请注意,我从以前RewriteRule,这使得下一个规则来加工除去[L]:

RewriteRule ^(.+\.php[45]?)/ $1 [QSA] 

如果这最终将您导向错误的页面,你将需要确定哪些查询字符串的页面需要对传统(非mod_rewrite)导航,并插入。假设它是page

RewriteRule ^(.+\.php[45]?)(/.*)$ $1?page=$2 [QSA] 
+0

谢谢你的答案,但是,同样的结果,它的工作原理确定为前应用程序,一个想是因为它的前端控制器'index.php',但fontend控制器管理应用是'admin.php',如果没有'/ web /'在url上就根本不起作用。但是这只发生在主机上,因为在我的电脑中按照你给我的规则在本地工作,没问题。任何线索? – 2013-05-06 14:36:45

+0

@ Kstro21尝试我刚添加的编辑。 – Zenexer 2013-05-07 18:55:57

相关问题