将所有文件请求路由到一个简单的文件夹名称以提供 PDF
Route all requests for files to a simple folder name for serving PDFs
我想为文件夹中的所有文件制作一个小 URL。所以不要写:
http://mywebsite.com/content/pdf/samples/Myfile.pdf
我会写:
http://MyWebsite.com/samples/myfile.pdf
我已经添加了
routes.MapPageRoute("Sample", "Sample/{*fullpath}", "~/Content/pdf/samples/{*fullpath}", False)
这似乎确实重定向了,但我得到 没有为扩展名“.pdf”注册的构建提供程序。但是,当我将 ASPX 文件放入文件夹并导航至该文件夹时,它工作正常。那么,我添加:
<add extension=".pdf" type="System.Web.Compilation.PageBuildProvider" />
这现在给我一个解析器错误,因为该页面充满了乱码。
图片也会发生同样的事情。
难道我问的不可行吗?似乎应该有一种方法让它理解服务或下载页面,就像没有路由一样。
有没有更好的方法?
好吧,我找到了一些有用的东西,尽管我不知道它有多有效或多棒。
我一直
routes.MapPageRoute("Sample", "Sample/{*fullpath}", "~/Content/pdf/samples/{*fullpath}", False)
然后我将以下内容添加到 Web.Config。
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect PDFs" stopProcessing="true">
<match url="^sample/?(.*)$" />
<action type="Redirect" url="/Content/SampleReports/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
我仍然很想知道是否有更好、更快或更简单的方法来做到这一点。此外,这适用于 PDF 文件。我假设我需要为示例目录中要提供的每种类型的静态文件制定规则。
我想为文件夹中的所有文件制作一个小 URL。所以不要写:
http://mywebsite.com/content/pdf/samples/Myfile.pdf
我会写:
http://MyWebsite.com/samples/myfile.pdf
我已经添加了
routes.MapPageRoute("Sample", "Sample/{*fullpath}", "~/Content/pdf/samples/{*fullpath}", False)
这似乎确实重定向了,但我得到 没有为扩展名“.pdf”注册的构建提供程序。但是,当我将 ASPX 文件放入文件夹并导航至该文件夹时,它工作正常。那么,我添加:
<add extension=".pdf" type="System.Web.Compilation.PageBuildProvider" />
这现在给我一个解析器错误,因为该页面充满了乱码。 图片也会发生同样的事情。
难道我问的不可行吗?似乎应该有一种方法让它理解服务或下载页面,就像没有路由一样。
有没有更好的方法?
好吧,我找到了一些有用的东西,尽管我不知道它有多有效或多棒。 我一直
routes.MapPageRoute("Sample", "Sample/{*fullpath}", "~/Content/pdf/samples/{*fullpath}", False)
然后我将以下内容添加到 Web.Config。
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect PDFs" stopProcessing="true">
<match url="^sample/?(.*)$" />
<action type="Redirect" url="/Content/SampleReports/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
我仍然很想知道是否有更好、更快或更简单的方法来做到这一点。此外,这适用于 PDF 文件。我假设我需要为示例目录中要提供的每种类型的静态文件制定规则。