.htaccess htaccess重写并传递顶级目录名
下面用于在执行htaccess重写时传递目录名:.htaccess htaccess重写并传递顶级目录名,.htaccess,.htaccess,下面用于在执行htaccess重写时传递目录名: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+) /index.php?xa=$1&xb=$2&xc=$3&xd=$4 [NC] RewriteRule ^([^/]+)/([^/]+)/([^/]+) /index.php?xa=$1&am
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+) /index.php?xa=$1&xb=$2&xc=$3&xd=$4 [NC]
RewriteRule ^([^/]+)/([^/]+)/([^/]+) /index.php?xa=$1&xb=$2&xc=$3 [NC]
RewriteRule ^([^/]+)/([^/]+) /index.php?xa=$1&xb=$2 [NC]
但是,当添加到上述内容时,最后一行还将捕获server.com/whatever情况:
RewriteRule ^([^/]+) /index.php?xa=$1 [NC]
我得到一个500服务器错误
怎么会这样
谢谢 有两个问题:
仅在第一条规则应用于下一条规则之前RewriteCond
- 在您的正则表达式中没有锚定
,用于$
重写规则
RewriteEngine On
# ignore all rules below from files and directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?xa=$1&xb=$2&xc=$3&xd=$4 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?xa=$1&xb=$2&xc=$3 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?xa=$1&xb=$2 [L,QSA]
太棒了。谢谢您!