htaccess 重写不适用于二级重写

htaccess rewrite doesn't work on 2nd level rewrite

我的 .htaccess 中有以下几行

Options +FollowSymlinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$                  seo.php?p= [L]
RewriteRule ^seo/site:(.*)$         seo.php?p=seo&domain=/&status=seo [QSA]
RewriteRule ^seo/(.*)$              seo.php?p=seo&domain=/&status=seo [L]
RewriteRule ^admin/page:(.*)$       seo.php?p=admin&page=/ [L]
RewriteRule ^webagent/page:(.*)$    seo.php?p=webagent&page=/ [L]
RewriteRule ^setlang:(.*)$          seo.php?setlang=/ [L]
RewriteRule ^(.*)/setlang:(.*)$     seo.php?p=/&setlang=/ [L]
</IfModule>

问题是只有第一个规则正常。它从 php 中当前定义的文件夹中获取页面 当我尝试打开

seo/domain.com

它不起作用,但是当我打开时

seo.php?p=seo&domain=domain.com&status=seo

效果很好。

这个 .htaccess 文件哪里出了问题。

你的规则是这样的:

Options +FollowSymlinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^seo/site:(.*)$         seo.php?p=seo&domain=/&status=seo [L,QSA]
RewriteRule ^seo/(.*)$              seo.php?p=seo&domain=/&status=seo [L,QSA]
RewriteRule ^admin/page:(.*)$       seo.php?p=admin&page=/ [L,QSA]
RewriteRule ^webagent/page:(.*)$    seo.php?p=webagent&page=/ [L,QSA]
RewriteRule ^setlang:(.*)$          seo.php?setlang=/ [L,QSA]
RewriteRule ^(.*)/setlang:(.*)$     seo.php?p=/&setlang=/ [L,QSA]
RewriteRule ^(.*)$                  seo.php?p= [L,QSA]

</IfModule>