.htaccess SEO友好的URL不使用两个参数

时间:2015-06-09 13:00:29

标签: php apache .htaccess mod-rewrite url-rewriting

我正在尝试为我的网站创建SEO友好的URL,我遇到了无法解决的问题。我无法弄清楚如何设置重写规则,因此它将显示例如www.mysite.com/shows/late-night和www.mysite.com/news/title-of-article。这是我的htaccess文件:

 RewriteEngine on
 RewriteRule ^(.*)/([a-z_-]+) index.php?switch=$1&shows=$2 [NC,L] 
 RewriteRule ^(.*)/([a-z_-]+) index.php?switch=$1&article=$2 [NC,L] 
 RewriteRule ^shows/$ index.php?switch=shows [NC,L]
 RewriteRule ^articles/$ index.php?switch=article [NC,L]

如果我注释掉第一行和第三行,重写规则会起作用,但我怎么这样做都会有效。

1 个答案:

答案 0 :(得分:1)

第1和第2规则不能共存,因为它们匹配相同的URI模式。只有第一个会一直这样。像这样调整你的规则:

RewriteEngine on

RewriteRule ^(shows)/([a-z_-]+)/?$ index.php?switch=$1&shows=$2 [NC,L,QSA] 
RewriteRule ^(news)/([a-z_-]+)/?$ index.php?switch=$1&article=$2 [NC,L,QSA] 
RewriteRule ^(shows|news|articles)/?$ index.php?switch=$1 [NC,L,QSA]