mod_rewrite: Rewrite URL to point to cgi script, but keep rewrite hidden

Bin*_*ntz 3 apache .htaccess mod-rewrite url-rewriting

I'm trying to rewrite the URL

http://domain.com/whatever 
Run Code Online (Sandbox Code Playgroud)

To:

http://domain.com/cgi-bin/script.cgi
Run Code Online (Sandbox Code Playgroud)

My .htaccess file looks like this:

RewriteEngine On
RewriteRule /whatever /cgi-bin/script.cgi [NC]
Run Code Online (Sandbox Code Playgroud)

This doesn't work and gives me a 404 error. However, this works:

RewriteEngine On
RewriteRule /whatever http://domain.com/cgi-bin/script.cgi [NC]
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,URL 更改对用户来说是可见的。我究竟做错了什么?

Bin*_*ntz 6

添加[PT]标志修复它:

RewriteEngine On
RewriteRule /whatever /cgi-bin/script.cgi [NC,PT]
Run Code Online (Sandbox Code Playgroud)

现在,如果有人可以解释为什么需要这样做以及实际发生了什么,我将非常感激。