Apache 用户友好的URL.htaccess

Apache 用户友好的URL.htaccess,apache,mod-rewrite,url-rewriting,seo,rewrite,Apache,Mod Rewrite,Url Rewriting,Seo,Rewrite,我有以下代码: RewriteRule ^fishing/([^/]*)/([^/]*) fishery.php?url=$2&region=$1 [L] RewriteRule ^fishing/([^/]*) region.php?region=$1 [L] 当我输入domain.com/fishing/fife时,它会显示正确的region.php文件 但是,如果我在最后键入domain.com/fishing/fife/,它将加载fishing.php页面。我怎样才

我有以下代码:

RewriteRule ^fishing/([^/]*)/([^/]*) fishery.php?url=$2&region=$1 [L]
RewriteRule ^fishing/([^/]*) region.php?region=$1 [L]      
当我输入domain.com/fishing/fife时,它会显示正确的region.php文件

但是,如果我在最后键入domain.com/fishing/fife/,它将加载fishing.php页面。我怎样才能防止这种情况

第二,如果加载为/fishing/fife而不是fishing/fife.php,对SEO目的是否有害??毕竟它是一个页面而不是一个目录?如果这不重要,那么我更希望它没有.php,因为它看起来更整洁


提前谢谢

我想这应该可以做到:

RewriteRule ^fishing/([^/]*)/([^/]+) fishery.php?url=$2&region=$1 [L]
RewriteRule ^fishing/([^/]*)/?$ region.php?region=$1 [L]   

另外,用“目录”url代替页面也没什么错,事实上,我认为这对SEO来说可能更好而不是更糟…

非常感谢您的帮助。这很好用。麻烦你解释一下好吗?还有关于第二部分的建议吗?我将
*
更改为
+
(在第一个模式中),因为
+
表示1-或更多(
*
表示0-或更多),所以如果第二个斜杠后没有任何内容,它将不再匹配。对于第二个模式,我将一个
/?
表示前面的0或1个字符),因此它在结尾处匹配一个
/
,如果它在那里,然后是一个
$
,它只是表示url的结尾,在这种情况下,这并不是必须的,但我发现指出url结尾在模式中的位置是一种很好的做法,以避免意外的模式冲突再次感谢您的帮助。