重写特定名称/值的规则以优先于其他名称/值

时间:2014-10-06 12:04:00

标签: regex apache .htaccess mod-rewrite

我有两条重写规则:

RewriteRule ^([^/]+)/([^/]+)/?$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L,QSA,B]

RewriteRule ^([^/]+)/?$ /?action=viewHomepageName&page_identifier=$1 [L,QSA,B]

我想创建一个重写的新规则:

/?action=archive&categoryId=$1 

/archive/news

“新闻”是类别ID,或$ 1。

根据上面提到的两个规则,这可能吗?我想我需要将它置于其他规则之上,并具体指定example.com/archive/ rewrite然后停止重写。

1 个答案:

答案 0 :(得分:1)

你可以在root .htaccess

中使用这样的规则
RewriteEngine On

# don't process further rules for real files and directories
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^(archive)/([^/]+)/?$ /?action=$1&categoryId=$2 [L,QSA,NC]

RewriteRule ^([^/]+)/([^/]+)/?$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L,QSA,B]
RewriteRule ^([^/]+)/?$ /?action=viewHomepageName&page_identifier=$1 [L,QSA,B]