2

所以这是我的问题:我正在尝试使用 htaccess 文件在网页上进行重定向。此重定向将指向自定义 URL(即,不是像“http://...”,而是像“myurl://...”这样的东西)。

现在,我正在一个小型本地 apache 服务器上尝试这个,其中我有一个 index.html 页面、一个“test”目录,在这个目录中有一个 .htaccess 文件和一个 test.html 文件。

这是 .htaccess 文件中的内容:

Options +FollowSymLinks
RewriteEngine   On
RewriteBase /
RewriteRule     ^(.*)$ myurl://test$1 [R=302]

我认为问题可能来自这里,因为我对此完全陌生,这是我第一次尝试写入 .htaccess 文件。那么,如果这不是执行此操作的正确方法,那么执行此操作的正确方法是什么?

感谢任何能提供帮助的人

4

2 回答 2

9

该问题与RewriteRule检查 url 方案的本身有关。从源代码mod_rewrite.c它只读取方案的一个子集:

Mod_Rewrite 识别的协议

  • ajp:// - Apache JServ 协议
  • balancer:// - Apache 负载均衡器
  • fcgi://
  • ftp:// - 文件传输协议
  • gopher:// - Gopher(协议)
  • http:// - 超文本传输​​协议
  • https:// - 超文本传输​​协议安全
  • ldap:// - 轻量级目录访问协议
  • mailto: - mailto URI 方案
  • 新闻: - 新闻协议
  • nntp:// - 网络新闻传输协议
  • scgi://
  • ws://
  • wws://

实际上,您可以使用RedirectMatch不检查协议的方法,如下所示:

RedirectMatch /(.*) myurl://$1
于 2014-11-14T12:32:54.503 回答
-1

也许我遗漏了一些东西,但 URL 的前缀是协议。浏览到该 url 的客户端有一个绑定到此协议的应用程序。HTTP(S) = 浏览器,MAGNET = torrent 客户端,MAILTO = 电子邮件客户端等。

因此,如果您的客户端配置为实际使用这种 url,您将通过 http 或 https 联系您的服务器..所以我猜您无法检查协议..?

如果 apache 接受您的请求,我想您可以使用 %{SCRIPT_URI} 检查整个 url。

于 2014-06-10T08:37:59.450 回答