Mod_rewrite没有组合动态子目录重写和静态子目录重写

时间:2017-06-23 19:31:44

标签: apache .htaccess mod-rewrite

我有以下内容.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ user.php?username=$1 [QSA]
    RewriteRule ^tag/(.*)$ tag.php?tag=$1
</IfModule>

我需要涵盖以下用例:

  1. http://example.com/ foo - &gt; http://example.com/user.php?username= FOO
  2. http://example.com/ 关于 - &gt; http://example.com/ 关于/ index.php的
  3. http://example.com/ 标签/栏 - &gt; http://example.com/tag.php?tag=
  4. 当前的mod_rewrite规则涵盖了案例1和2(关于/ index.php是一个真实的位置)。我无法让他们报道案例3.

1 个答案:

答案 0 :(得分:1)

通过重新排序规则并关闭MultiViews选项来实现这一目标。也跳过文件&amp;所有重写规则中的目录:

Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^tag/(.+)$ tag.php?tag=$1 [L,NC,QSA]

RewriteRule ^(.+)$ user.php?username=$1 [L,QSA]