当页面存在同名时,mod_rewrite不起作用

I have a page shirts.php which lists all the shirts, and then I have a page product.php?id=X, which displays the individual product information.

If I write the rule like this:

RewriteRule ^mens_shirts/([0-9]+)$ product.php?id=$1 [L]

and the input url is mens_shirts/22 it displays the product page correctly with the clean URL.

However, if I write the rule like follows:

RewriteRule ^shirts/([0-9]+)$ product.php?id=$1 [L]

and the input url is /shirts/20, instead of displaying the product page, it displays shirts.php.

Give this a try:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteRule ^shirts/([0-9]+)$ product.php?id=$1 [NC,L]

I believe that happens because you have MultiViews enabled, by disabling it, it should let you do what you want. Why, read here.

FollowSymLinks - The server will follow symbolic links in this directory.