1

我已经阅读了很多关于此的内容,但我无法使其正常工作,所以,我发布了一个问题

我有一个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 生成 url /web,因此,我创建了一个自定义类,它扩展自sfPatternRouting,覆盖该generate函数以返回如下内容:

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

这又可以了,我有漂亮的 url 并且可以正常工作,但是,当您尝试访问时,http://my.domain.com/admin.php/我得到404 Page not found error并且所有管理应用程序都无法正常工作,url/admin.php/services相同的结果,总是相同的,所以,我重新创建了相同的环境在我的本地电脑中,工作正常,但在托管中它不起作用。

那么,我制作的 .htaccess 配置应该可以工作吗?我是否需要更多条件并重写规则才能按我想要的方式工作?文件夹
内的 .htaccess 会影响吗?/web

主机是 www.bluehost.com
需要帮助
谢谢

4

1 回答 1

0

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

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

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

您的托管服务提供商可能需要此行。请注意,我从上一个中删除了 [L] RewriteRule,这允许下一个规则起作用:

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

如果这最终将您发送到错误的页面,您将需要确定该页面为传统(非 mod_rewrite)导航采用什么查询字符串,然后插入它。假设它是page

RewriteRule ^(.+\.php[45]?)(/.*)$ $1?page=$2 [QSA]
于 2013-05-03T19:47:48.220 回答