我不是.htaccess的专家,所以如果这个问题听起来很愚蠢,那就很抱歉。
我的ISP将整个网站移至新服务器。 root的路径已更改。许多文件使用php包含哪条路径硬编码到旧路径。我想避免手动重写所有内容。我正在尝试使用.htaccess,就像这样:
Options +FollowSymlinks
RewriteEngine on
RewriteRule /oldpath/(.*) /newpath/$1 [NC]
但它不起作用。我做错了什么?
答案 0 :(得分:1)
mod_rewrite
,而PHP include()
可以直接访问文件系统,从而绕过Web请求。因此,.htaccess文件中的任何RewriteRules
都不会通过调用PHP include()
或require()
函数来执行。
在.htaccess文件中解决此问题的方法是设置PHP包含路径,如下所示:
php_value include_path ".:/usr/local/lib/php:/your/new/base/include/path"
有关changing configuration settings的详细信息,请参阅PHP手册。
这也可以在带有以下内容的引导程序PHP文件中进行更改:
ini_set('include_path', ini_get('include_path') . ':/your/new/base/include/path');
您别无选择,只能在代码库中进行查找和替换。正如@Crontab建议你应该使用基本路径的中央声明。
答案 1 :(得分:0)
您是否检查过Apache是否允许.htaccess覆盖您的默认配置?
您应该在http docs文件夹的根目录或任何需要的地方使用AllowOverride All
之类的内容