Diggbar modrewrite-他们如何通过modrewrite传递URL?

Jos*_*nie 3 php mod-rewrite

使用新的Diggbar,您可以放在http://digg.com当前所在的任何URL之前,它将创建一个Digg短URL.我只是假设他们通过modrewrite做到这一点(虽然我不确定,因为我是新手).

这是怎么做到的?在我尝试使用我正在处理的网站时,我觉得它爆炸了.

我希望能够做到以下几点:

http://example.com/http://stackoverflow.com/question/ask
Run Code Online (Sandbox Code Playgroud)

并有一个modrewrite,允许这样做

http://example.com/index.php?url=http://stackoverflow.com/question/ask
Run Code Online (Sandbox Code Playgroud)

但是当我使用这个modrewrite时:

RewriteEngine on
RewriteRule ^([A-Za-z0-9]+)$ /message.php?id=$1 [L]
Run Code Online (Sandbox Code Playgroud)

它不起作用.我究竟做错了什么?

Gum*_*mbo 5

您必须从请求行中获取值,因为Apache会删除空路径段.最初请求的URI路径/http://foobar/变为/http:/foobar/.但请求行(THE_REQUEST)保持不变:

RewriteCond %{THE_REQUEST} ^GET\ /(https?://[^\s]+)
RewriteRule ^https?:/ index.php?url=%1 [L]
Run Code Online (Sandbox Code Playgroud)