2012-08-12 135 views
2

我已经在我的网站上为索引页面完成了RewriteRule。.htaccess多个页面的重写规则

这里是下面的代码:

<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 

我已经尝试过以下网址,但我仍然只被引用到索引页。

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

任何人都可以给我一个解决这个请!

回答

1

由于您的索引页面的正则表达式符合您的请求,因此您被转发到索引页面。你被发送到index.php?起源= namemeaning &性别=阿巴西

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放在那些更一般的那些上面。

有关正则表达式的更多信息,我可以建议你this website

+0

解决了我的问题,粘贴代码上面所有的他们谢谢! – agurchand 2012-08-12 09:32:30

0

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