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>
我的 .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>