两个mod_rewrite规则的组合

时间:2014-03-22 21:54:32

标签: apache .htaccess mod-rewrite

我已经阅读了很多与此主题相关的问题,但我找不到解决方案。我想结合两个mod_rewrite规则:

  1. ... /filename.html 改为 ... /index.php?page=filename
  2. ... / article / name to ... /index.php?article=name
  3. 为此,我创建了以下两条规则:

    1. RewriteRule ^(.*)\.html$ index.php?page=$1
    2. RewriteRule ^article/(.*)\.html$ index.php?article=$1
    3. 只要它们单独使用,它们都能正常工作。我认为错误可能是因为第一条规则,它用/ article / ...重写每个URL也是URL,这就是为什么我尝试了以下内容,但它仍然不起作用:

      RewriteEngine on
      RewriteRule ^article/(.*)\.html$ index.php?article=$1
      RewriteCond %{REQUEST_URI} !/articles$ 
      RewriteRule ^(.*)\.html$ index.php?page=$1
      

      如果我想去 ... /test.html 我已经 ... /index.php?page=test 但是如果我输入< strong> ... /article/test.html 我只能 ... /index.php?page=index.php/test 而不是 ... / index .PHP?文章=测试

      此外,我不希望它重写存储在 / admin 中的任何内容,但RewriteCond %{REQUEST_URI} !/admin$也不起作用。

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。第3行中的条件是错误的,实际上应该说RewriteCond %{REQUEST_URI} !/article/(.*)\.html$以便将所有内容包含在 ... / article / 目录中,而不仅仅是 ... / article / 本身。