首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >symfony1、托管、文档根目录和apache mod_rewrite

symfony1、托管、文档根目录和apache mod_rewrite
EN

Stack Overflow用户
提问于 2013-05-04 03:40:14
回答 1查看 140关注 0票数 1

我读了很多关于这方面的文章,但我不能让它工作,所以,我发了一个问题

我有一个包含两个应用程序(前端、管理员)的Symfony1项目,托管文档根目录为public_html,因此文件夹结构如下:

代码语言:javascript
复制
/public_html
|--/apps/
|--/cache/
|........
|--/web/

支持团队告诉我,他们不能不为我更改文档根目录,所以,我要做的就是开始尝试使用.htaccess,我就是这么做的:

代码语言:javascript
复制
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生成urls,所以,我创建了一个从sfPatternRouting扩展的自定义类,覆盖generate函数以返回类似如下的内容:

代码语言:javascript
复制
public function generate($name, $params = array(), $absolute = false) {
    $url = parent::generate($name, $params, $absolute);
    $pattern = '/\/web\//';
    return preg_replace($pattern,'/', $url);
}

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

那么,我所做的.htaccess配置应该可以工作吗?我需要更多的条件和重写规则才能以我想要的方式工作吗?

/web文件夹中的.htaccess会影响吗?

主机是www.bluehost.com

需要帮助吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-05-04 03:47:48

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

代码语言:javascript
复制
RewriteEngine on
AddHandler application/x-httpd-php53 .php

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

您的主机提供商可能需要此行。请注意,我从前一个RewriteRule中删除了L,这允许下一个规则生效:

代码语言:javascript
复制
RewriteRule ^(.+\.php[45]?)/ $1 [QSA]

如果这最终将您带到错误的页面,您将需要确定用于传统(非mod_rewrite)导航的页面所采用的查询字符串,并插入该查询字符串。假设它是page

代码语言:javascript
复制
RewriteRule ^(.+\.php[45]?)(/.*)$ $1?page=$2 [QSA]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16366372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档