GVKun编程网logo

windows 域名+虚拟目录 (php)(虚拟域名配置)

1

对于想了解windows域名+虚拟目录(php)的读者,本文将是一篇不可错过的文章,我们将详细介绍虚拟域名配置,并且为您提供关于.NETCORE3.1虚拟目录404错误、apache虚拟目录、apac

对于想了解windows 域名+虚拟目录 (php)的读者,本文将是一篇不可错过的文章,我们将详细介绍虚拟域名配置,并且为您提供关于.NET CORE 3.1 虚拟目录 404 错误、apache 虚拟目录、apache 虚拟目录 403 错误问题、Asp.Net Core 中的“虚拟目录”的有价值信息。

本文目录一览:

windows 域名+虚拟目录 (php)(虚拟域名配置)

windows 域名+虚拟目录 (php)(虚拟域名配置)


1.修改windows 域名
c:\windows\system32\drivers\etc\hosts
127.0.0.1       localhost

192.168.0.100   abc
127.0.0.2    a

2.修改apache的虚拟目录
C:\xampp\apache\conf\extra\httpd-vhosts.conf

 ServerName tradesns
 DocumentRoot D:/tradesns
 
  Options FollowSymLinks IncludesNOEXEC Indexes
  DirectoryIndex index.html index.htm default.htm index.php default.php
  AllowOverride all
  Order Deny,Allow
  Allow from all
 

 


 ServerName a
 DocumentRoot D:/tradesns2
    
     Options FollowSymLinks IncludesNOEXEC Indexes
     DirectoryIndex index.html index.htm default.htm index.php default.php
     AllowOverride all
     Order Deny,Allow
     Allow from all
    

立即学习“PHP免费学习笔记(深入)”;

.NET CORE 3.1 虚拟目录 404 错误

.NET CORE 3.1 虚拟目录 404 错误

如何解决.NET CORE 3.1 虚拟目录 404 错误

我们有一个由 IIS 托管的已发布的 .NET Core 3.1 网站。根文件夹(包含 DLL)是: c:\\qa\\web\\

否则我们有如下文件夹:

  • c:\\qa\\web\\wwwroot\\css
  • c:\\qa\\web\\wwwroot\\js

在 IIS 中,我们创建了一个名为“images”的虚拟目录。该网站可以通过 http://localhost

访问

我们可以无误地查看单个文件:

  • http://localhost/js/brand.js
  • http://localhost/css/main.css

但是我们在尝试查看虚拟目录中的文件时得到 404:

http://localhost/images/foo.jpg

但是如果我们在 URL 中插入“/wwwroot”,我们可以毫无问题地看到虚拟目录的内容:

http://localhost/wwwroot/images/foo.jpg

为什么我们在 URL 中需要“wwwroot/”?当我们从 Visual Studio / IIS Express 运行同一个网站时,我们不需要 URL 中的“wwwroot/”来查看 /images/foo.jpg

我想如果我们将虚拟目录别名设置为“wwwroot/images”可能会起作用,但它不允许别名中包含斜杠字符。

解决方法

确保在站点级别创建虚拟目录。 看起来它嵌套在 wwwroot 文件夹中。 试试这个 - 右键单击​​站点 --> 添加虚拟目录 --> 别名:图像,物理路径:c:\\qa\\web\\wwwroot。在此之后,您应该在 http://localhost/images/js/brand.js、http://localhost/images/css/main.css 等下访问图像。

如果没有帮助,请考虑将静态文件保存在应用程序根文件夹之外的不同文件夹中,并创建与之链接的虚拟目录。

apache 虚拟目录

apache 虚拟目录

apache 虚拟目录可以为网络路径吗?类似下面这样

 

Alias /raid "//cnetos/Public/yum/"

<Directory "//centos/Public/yum">
 Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from All
  Require all granted
</Directory>

apache 虚拟目录 403 错误问题

apache 虚拟目录 403 错误问题

Alias /raid "smb://192.168.0.218/Public/public/yum/"

<Directory "smb://192.168.0.218/Public/public/yum/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from All
  Require all granted
</Directory>



为什么我这样配置虚拟目录 报 403 错误,但是当虚拟目录对应的物理路径为本地路径的时候可以正常访问

Asp.Net Core 中的“虚拟目录”

Asp.Net Core 中的“虚拟目录”

写在前面

  现在部署Asp.Net Core应用已经不再限制于Windows的IIS上,更多的是Docker容器、各种反向代理来部署。也有少部分用IIS部署的,IIS部署确实是又快又简单,图形化操作三下五除二就可以发布好一个系统了。在过去Asp.Net MVC 项目部署的时候,还常常使用IIS一个功能——虚拟目录

虚拟目录可以直接定位到非项目的其他路径,将路径作为网站的一部分,可实现上传文件保存到其他盘符或间接的使用项目以外的静态文件。在Asp.Net MVC中从虚拟路径中存取文件也很简单,如 Server.MapPath("~/Upload/liohuang.jpg"); 

但在Asp.Net Core上不同,它被抽象出一个“文件系统”,也就是FileProvider。FileProvider是对所有实现了IFileProvider接口的所有类型以及对应对象的统称,在Artech蒋老师的《.NET Core的文件系统[2]:FileProvider是个什么东西?》文章中已经透析了,这里不在罗里吧嗦了。

这篇文章要解决的内容是:Asp.Net Core应用中,如何优雅的使用“虚拟目录”。

实操

  首先,新建一个.Net Core WebApi空项目,这里物理路径在F盘,分别创建三个测试目录: F:/test1 、 F:/test2 和 F:/test3 ,目录里分别存放对应的文件 1/2/3.jpg 和 mybook.txt 。

读取虚拟目录文件

  在 Startup.ConfigureServices 注入 IFileProvider :

   services.AddSingleton<IFileProvider>(new PhysicalFileProvider("F:\\test1"));

新建一个控制器,读取 mybook.txt 中的内容:

[ApiController] [Route("[controller]/[action]")] public class LioHuangController : ControllerBase {  [HttpGet]  public object GetFiles([FromServices]IFileProvider fileProvider)  {   var file = fileProvider.GetFileInfo("mybook.txt");   if (file.Exists)   {    return ReadTxtContent(file.PhysicalPath);   }   return 0;  }  /// <summary>  /// 读取文本 (原文地址:https://www.cnblogs.com/EminemJK/p/13362368.html)  /// </summary>  private string ReadTxtContent(string Path)  {   if (!System.IO.File.Exists(Path))   {    return "Not found!";   }   using (StreamReader sr = new StreamReader(Path, Encoding.UTF8))   {    StringBuilder sb = new StringBuilder();    string content;    while ((content = sr.ReadLine()) != null)    {     sb.Append(content);    }    return sb.ToString();   }  } }

访问接口,接口读取文件之后,返回内容:

 IFileProvider 接口采用目录来组织文件,并统一使用 IFileInfo 接口来表示, PhysicalPath 表示文件的物理路径。

public interface IFileInfo {  bool Exists { get; }  bool IsDirectory { get; }  DateTimeOffset LastModified { get; }  string Name { get; }  string PhysicalPath { get; }  Stream CreateReadStream(); }

 如多个虚拟目录,怎么处理?简单,注入多个 IFileProvider 即可,

   services.AddSingleton<IFileProvider>(new PhysicalFileProvider("F:\\test1"));   services.AddSingleton<IFileProvider>(new PhysicalFileProvider("F:\\test2"));   services.AddSingleton<IFileProvider>(new PhysicalFileProvider("F:\\test3"));

代码修改为:

   public object GetFiles([FromServices] IEnumerable<IFileProvider> fileProviders)

 IEnumerable<IFileProvider> fileProviders 接口数组将会有三个,按注入的顺序对应不同的目录。当然,注入 IFileProvider 的时候,就可以封装一层了,下面再讲。

另外,有的说直接 ReadTxtContent("F:\test1\mybook.txt"); 不香吗?香,Asp.Net Core的访问权限要比Asp.Net MVC之前老版本项目要高许多,确实是可以直接读取项目以外的文件,但是并不适合直接去访问,除非说你只有一个地方使用到,那么就可以直接读取,但静态的文件的访问,就访问不到了,仅仅是后台读取而已。所以统一使用 IFileProvider 来约束,代码的可维护性要高许多。

静态文件访问

  在Startup.Configure设置静态文件目录,即可:

app.UseStaticFiles(new StaticFileOptions()   {    FileProvider = new PhysicalFileProvider("F:\\test1"),    RequestPath = "/test"   });;  app.UseStaticFiles(new StaticFileOptions()   {    FileProvider = new PhysicalFileProvider("F:\\test2"),    RequestPath = "/test"   });  app.UseStaticFiles(new.........

今天关于windows 域名+虚拟目录 (php)虚拟域名配置的分享就到这里,希望大家有所收获,若想了解更多关于.NET CORE 3.1 虚拟目录 404 错误、apache 虚拟目录、apache 虚拟目录 403 错误问题、Asp.Net Core 中的“虚拟目录”等相关知识,可以在本站进行查询。

本文标签: