如何处理自定义url模式的重写?

所以这里是我的问题:我正在尝试使用htaccess文件在网页上进行redirect。 这个redirect将是一个自定义的URL(即不是东西“http:// …”,但像“myurl:// …”)。

现在,我试图在一个本地的apache服务器,其中我有一个index.html页面,一个“testing”目录,并在这个目录中一个.htaccess文件和一个test.html文件。

以下是.htaccess文件中的内容:

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

我认为这个问题可能来自这里,因为我是全新的,这是我第一次尝试写入.htaccess文件。 所以,如果这不是正确的做法,那么做到这一点的正确方法是什么?

感谢任何能提供帮助的人

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

由Mod_Rewrite识别的协议

  • ajp:// – Apache JServ协议
  • 平衡器:// – Apache Load Balancer
  • FCGI://
  • ftp:// – 文件传输协议
  • gopher:// – Gopher(协议)
  • http:// – 超文本传输​​协议
  • https:// – 安全的超文本传输​​协议
  • ldap:// – 轻量级目录访问协议
  • mailto: – mailto URI方案
  • 新闻: – 新闻协议
  • nntp:// – 网络新闻传输协议
  • SCGI://
  • WS://
  • WWS://

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

 RedirectMatch /(.*) myurl://$1 

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

所以,如果你的客户端被配置为实际使用这种类型的网址,你将通过http或https联系你的服务器..所以我猜你不能检查协议..?

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