我的网站几乎可以正常运行,但在原始代码中有,例如img src="/design/pic1.png"
等等。在真实的服务器上,有一个必须的目录,web
,所以新路径应该是img src="web/design/pic1.png"
,但我不想重写所有路径。 还有其他的选择吗?重定向到另一个目录
回答
根据你的设置,一种方法是有一个常数,决定你的基本路径,这取决于你的环境。
例如,假设你的开发环境中,很高兴地把所有图像$WEB_ROOT . "/design/"
,但在生产环境是$WEB_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");
}
?>
然后,在你的HTML,您可以使用此BASE_PATH
常量像这样:
<img src="<?=BASE_PATH;?>/design/pic1.png" />
你如何决定什么是ENV_DEV
在这个例子中ENV_PROD
,完全是ü p给你。
一种方法是根据域来检测它(使用$_SERVER['HTTP_HOST']
,其中has some caveats)。
另一种方法是在您的网页配置中初始化它。假设你使用的是Apache2,你可以使用SetEnv
指令。
在你httpd.conf
:
SetEnv MY_ENVIRONMENT DEV
,你可以在PHP中使用访问:
<?php
$_SERVER['MY_ENVIRONMENT'];
// or...
getenv("MY_ENVIRONMENT");
?>
多数民众赞成在很好,以及如何处理.css文件中的文件? –
这是一个棘手的问题。我倾向于将与CSS文件相关的图像放置到CSS目录中。所以,如果我有'$ WEB_ROOT/css/style.css',我会创建'$ WEB_ROOT/css/images /',然后用CSS的相对路径引用图像。 'images/foo.png',而不是'/ something/something/css/images/foo.png'。或者,如果您知道您的CSS目录始终远离您的web根目录,您可以执行'../ images/foo.png'。 – gpmcadam
- 1. 从一个目录重定向到另一个目录
- 2. 将一个目录重定向到另一个目录
- 3. 将请求从一个目录重写/重定向到另一个目录
- 4. 从一个目录重定向到另一个mod_rewrite的
- 5. 使一个子目录重定向到另一个文件
- 6. 将单个图像从一个目录重定向到另一个目录
- 7. 如何使用.htaccess将一个目录重定向到另一个目录?
- 8. .htaccess的子目录从一个域重定向到另一个域子目录
- 9. 重定向目录(但不是子目录)到另一个目录
- 10. 的.htaccess重写根子目录重定向到另一个子目录
- 11. .htaccess重定向到一个目录
- 12. 重定向到另一个子域,除非查看目录
- 13. htaccess的重定向到另一个目录
- 14. htaccess从空文件夹重定向到另一个目录
- 15. 将域重定向到另一个域上的目录
- 16. 有没有办法将INSTALLDIR重定向到另一个目录?
- 17. 将所有请求重定向到另一个目录
- 18. Apache重定向主机:端口/目录到另一个主机:端口/目录
- 19. 的.htaccess从子目录重定向到另一个域子目录因此
- 20. htaccess重定向一个特定的目录URL到另一个不同的URL?
- 21. 登录后重定向到另一页
- 22. Laravel重定向登录后,JavaScript重定向到另一页
- 23. htaccess从一个域的URL重定向到另一个域的根目录
- 24. 重定向从目录到子目录
- 25. 重定向到子目录
- 26. 重定向到子目录
- 27. 重定向到'app'目录
- 28. 从一个子目录重定向到另一个,但阻止直接访问后一个子目录
- 29. 重写规则重定向到另一个端口,同时更改目录
- 30. 将单个目录重定向到HTTPS
即使你拥有服务器的所有那些路径改写为较新的版本,这应该只是暂时的修复,你不应该指的是不存在的路径,因为你不想去改变它们。做正确的事情,并使用一个好的编辑器,可以用正则表达式进行搜索和替换,并用正确的替换路径。 (另外,我觉得奇怪的是,在你的网站目录中你有一个“web”文件夹 - 对我来说似乎是多余的。) –