我想将detail.php?id = 4更改为detail / 4,但我的.htaccess文件无效

This is my .htaccess file looks like

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s

RewriteRule ^home$ index.php [NC,L]
RewriteRule ^detail$ detail.php [NC,L]

RewriteRule ^detail/([0-9a-zA-Z]+)$ detail.php?id=$1 [NC,L]

You're talking about using .htaccess to rewrite your URLs internally and route them appropriately to your application.

You should try with this specific .htaccess example that will do what you're looking for:

    RewriteEngine On

    # external redirect from actual URL to pretty one
    RewriteCond %{THE_REQUEST} /detail(?:\.php)?\?id=([^\s&]+) [NC]
    RewriteRule ^ detail/%1? [R=302,L,NE]
    # internal forward from pretty URL to actual one
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^detail/([^/]+)/?$ detail.php?id=$1

EDITED:

You are doing the opposite in your htaccess, redirecting detail/4 to detail.php?id=4. In your question you say ?id=4 to /4.

So swap, edit and test