2

我已经为我的网站中的索引页面完成了 RewriteRule。

下面是代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/?$ /index.php?origin=$1
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/([a-zA-Z0-9+\-]+)/?$ /index.php?origin=$1&gender=$2
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/([a-zA-Z0-9+\-]+)/([a-zA-Z0-9+\-]+)/?$ /index.php?origin=$1&gender=$2&type=$3
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/([a-zA-Z0-9+\-]+)/([a-zA-Z0-9+\-]+)/([a-zA-Z0-9+\-]+)/?$ /index.php?origin=$1&gender=$2&type=$3&page=$4
</IfModule>

网址看起来像

http://babynames.agurchand.com/scottish/male/pythagorean

这是一个单页网站,所以到目前为止一切正常。然后我想在我的网站上再添加一页,我也添加了。文件名为“namemeaning.php”。

除了在底部粘贴的 htaccess 之外,我还添加了以下代码。但这似乎不起作用。

RewriteRule ^/namemeaning/([a-zA-Z0-9+\-\(\)]+)/?$ /namemeaning/namemeaning.php?name=$1

我已经尝试使用下面的 url,但我仍然只被引用到索引页面。

http://babynames.agurchand.com/namemeaning/abasi

任何人都可以给我一个解决方案吗?

4

2 回答 2

1

您将被转发到索引页面,因为索引页面的正则表达式符合您的请求。你被发送到 index.php?origin=namemeaning&gender=abasi

http://babynames.agurchand.com/namemeaning/abasi
'namemeaning' fits the rule ([a-zA-Z0-9+\-\(\)]+)
'abasi' fits the rule ([a-zA-Z0-9+\-]+)

一个简单的解决方法是添加该行

RewriteRule ^/namemeaning/([a-zA-Z0-9+\-\(\)]+)/?$ /namemeaning/namemeaning.php?name=$1

水准之上

RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/?$ /index.php?origin=$1

您应该记住始终将最具体的 RewriteRule(s) 放在更通用的 RewriteRule 之上。

有关正则表达式的更多信息,我可以在这个网站上为您提供建议。

于 2012-08-12T09:23:29.447 回答
0

重写规则从上到下依次检查,所有匹配的规则都按该顺序应用。仔细检查您的规则是否在所需规则之前匹配。为此目的的好工具是http://www.regextester.com/

于 2012-08-12T09:25:06.617 回答