特定于页面的mod_rewrite规则

时间:2018-04-10 20:05:45

标签: php apache mod-rewrite

我有以下页面结构:

  1. domain.com/page.php?cat=hello&url=world
  2. domain.com/careers.php?cat=careers&url=careers
  3. domain.com/article.php?cat=blog&url=this-blog-name
  4. 我希望他们按照以下方式工作:

    1. domain.com/hello/world.html
    2. domain.com/careers/careers.html
    3. domain.com/blog/this-blog-name.html
    4. 我尝试了以下但未成功(mod_rewrite已启用且已确认正常工作):

      RewriteRule ^([^/]*)/([^/]*)\.html$ /careers.php?cat=$1&url=$2 [L]
      RewriteRule ^([^/]*)/([^/]*)\.html$ /page.php?cat=$1&url=$2 [L]
      RewriteRule ^([^/]*)/([^/]*)\.html$ /article.php?cat=$1&url=$2 [L]
      

1 个答案:

答案 0 :(得分:4)

你的正则表达式是相同的,因此,Apache每次都会落入第一个。

您可以使用网址的第一部分重定向到已知网页(职业,博客),然后使用您的表达式来覆盖所有其他网页:

RewriteRule ^careers/([^/]*)\.html$ /careers.php?cat=careers&url=$1 [L]
RewriteRule ^blog/([^/]*)\.html$ /article.php?cat=blog&url=$1 [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ /page.php?cat=$1&url=$2 [L]