根据我安装文件集的位置,RewriteBase
如果我将其安装在子目录中而不是 www 根目录中,似乎必须相应地进行更改。
对于我的配置文件,我使用类似下面的方法允许管理员更改设置以适合他们的部署环境。
$yaml = file_exists($yamldir) ? Spyc::YAMLLoad($yamldir) : array();
$default = array(
'hostname' => 'mydomain.com',
'base_uri' => '/sub/',
'mysql_host' => 'localhost',
'mysql_username' => 'root',
'mysql_password' => '',
'schema_name' => 'schema1',
'table_name' => 'table1'
);
$config = array_merge($default, $yaml);
然后,SVN 或 git 会忽略 config.yml,以实现最大灵活性。这似乎是最好的方法。
.htaccess 文件是否有等效项,用于读取(或更好的是,解析)可能存在或不存在的配置文件?
背景信息
在这种情况下,我的 .htaccess 需求非常简单:
RewriteEngine On
RewriteBase /sub
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L]
如果我使用 Rails 风格的公共目录而不是有效“开放”的 www 根目录,那可能是最好的选择,但我可以根据需要处理这个问题。在我的例子中,RewriteBase 是否必要?我不确定。即便如此,我可以想到将来我有一个更复杂的 .htaccess 的情况,在这种情况下,我将很难找到 RewriteBase 的解决方法(或者我这样想也是错的?)
答案1
您可能应该使用自定义脚本来进行重写: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritemap - 外部重写程序