我读了很多关于这方面的文章,但我不能让它工作,所以,我发了一个问题
我有一个包含两个应用程序(前端、管理员)的Symfony1项目,托管文档根目录为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生成urls,所以,我创建了一个从sfPatternRouting扩展的自定义类,覆盖generate函数以返回类似如下的内容:
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
需要帮助吗?
谢谢
发布于 2013-05-04 03:47:48
如果我理解正确的话,您希望将所有请求重定向到/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]https://stackoverflow.com/questions/16366372
复制相似问题