Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重定向到另一个目录_Php_Html_.htaccess - Fatal编程技术网

Php 重定向到另一个目录

Php 重定向到另一个目录,php,html,.htaccess,Php,Html,.htaccess,我的网站几乎已经启动并运行,但在原始代码中有,例如imgsrc=“/design/pic1.png”等等。在真正的服务器上,有一个must dir,web,因此新路径应该是img src=“web/design/pic1.png”,但我不想重写所有路径。 还有其他选择吗?根据您的设置,一种方法是使用一个常数来指示您的基本路径,这取决于您的环境 例如,假设在您的开发环境中,您乐于将所有图像放在$WEB\u ROOT中。“/design/”,但在您的生产环境中它是$WEB\u ROOT。“/web/

我的网站几乎已经启动并运行,但在原始代码中有,例如
imgsrc=“/design/pic1.png”
等等。在真正的服务器上,有一个must dir,
web
,因此新路径应该是
img src=“web/design/pic1.png”
,但我不想重写所有路径。
还有其他选择吗?

根据您的设置,一种方法是使用一个常数来指示您的基本路径,这取决于您的环境

例如,假设在您的开发环境中,您乐于将所有图像放在
$WEB\u ROOT中。“/design/”
,但在您的生产环境中它是
$WEB\u ROOT。“/web/design/”
,那么您可能会得到如下结果:

<?php

    // initialise stuff for development
    if(ENVIRONMENT == ENV_DEV) {

        define("BASE_PATH", "/");

    // initialise stuff for production 
    } elseif(ENVIRONMENT == ENV_PROD) {

        define("BASE_PATH", "/web");

    }

?>
在本例中,您如何决定什么是
ENV_DEV
ENV_PROD
,完全取决于您自己

一种方法是基于域检测它(使用
$\u SERVER['HTTP\u HOST']
,这是一种有效的方法)

另一种方法是在web配置中对此进行初始化。假设您使用的是Apache2,那么可以使用
SetEnv
指令

在您的
httpd.conf
中:

SetEnv MY_ENVIRONMENT DEV
您可以使用以下方式在PHP中访问:

<?php

    $_SERVER['MY_ENVIRONMENT'];

    // or...

    getenv("MY_ENVIRONMENT");

?>

根据您的设置,一种方法是使用一个常数来指示您的基本路径,这取决于您的环境

例如,假设在您的开发环境中,您乐于将所有图像放在
$WEB\u ROOT中。“/design/”
,但在您的生产环境中它是
$WEB\u ROOT。“/web/design/”
,那么您可能会得到如下结果:

<?php

    // initialise stuff for development
    if(ENVIRONMENT == ENV_DEV) {

        define("BASE_PATH", "/");

    // initialise stuff for production 
    } elseif(ENVIRONMENT == ENV_PROD) {

        define("BASE_PATH", "/web");

    }

?>
在本例中,您如何决定什么是
ENV_DEV
ENV_PROD
,完全取决于您自己

一种方法是基于域检测它(使用
$\u SERVER['HTTP\u HOST']
,这是一种有效的方法)

另一种方法是在web配置中对此进行初始化。假设您使用的是Apache2,那么可以使用
SetEnv
指令

在您的
httpd.conf
中:

SetEnv MY_ENVIRONMENT DEV
您可以使用以下方式在PHP中访问:

<?php

    $_SERVER['MY_ENVIRONMENT'];

    // or...

    getenv("MY_ENVIRONMENT");

?>


即使您让服务器将所有这些路径重写到较新版本,这也只是一个临时修复,您不应该仅仅因为不想去更改它们而引用不存在的路径。做正确的事情,使用一个好的编辑器,它可以用正则表达式进行搜索和替换,只需用正确的路径替换路径即可。(另外,我觉得奇怪的是,在你的网站目录中,你有一个“web”文件夹对我来说似乎是多余的。)即使你让服务器将所有这些路径重写到新版本,那应该只是一个临时修复,你不应该仅仅因为不想去更改它们而引用不存在的路径。做正确的事情,使用一个好的编辑器,它可以用正则表达式进行搜索和替换,只需用正确的路径替换路径即可。(另外,我觉得奇怪的是,在你网站的目录中,你有一个“web”文件夹,这对我来说似乎是多余的。)那太好了,那么.css文件中的文件呢?这是一个棘手的问题。我倾向于将与CSS文件相关的图像放置在CSS目录中。因此,如果我有
$WEB\u ROOT/css/style.css
,我将创建
$WEB\u ROOT/css/images/
,然后用相对路径引用css中的图像,例如
images/foo.png
,而不是
/something/css/images/foo.png
。或者,如果你知道你的CSS目录总是离你的web根目录一级远,你可以做
。/images/foo.png
。这很好,那么.CSS文件中的文件呢?这是一个棘手的问题。我倾向于将与CSS文件相关的图像放置在CSS目录中。因此,如果我有
$WEB\u ROOT/css/style.css
,我将创建
$WEB\u ROOT/css/images/
,然后用相对路径引用css中的图像,例如
images/foo.png
,而不是
/something/css/images/foo.png
。或者,如果您知道您的CSS目录总是离您的web根目录一级,您可以执行
。/images/foo.png