htaccess 重写并传递顶级目录名称
htaccess rewrite and pass top directory name
下面是在进行 htaccess 重写时传递目录名称的方法:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+) /index.php?xa=&xb=&xc=&xd= [NC]
RewriteRule ^([^/]+)/([^/]+)/([^/]+) /index.php?xa=&xb=&xc= [NC]
RewriteRule ^([^/]+)/([^/]+) /index.php?xa=&xb= [NC]
但是添加到上面的时候,最后一行也要抓到服务器。com/whatever 情况:
RewriteRule ^([^/]+) /index.php?xa= [NC]
我收到 500 服务器错误...
怎么会?..
谢谢!
有2个问题:
RewriteCond
在第一个规则应用到下一个 RewriteRule
之前
RewriteRule
. 的正则表达式中没有锚 $
固定代码如下:
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=&xb=&xc=&xd= [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?xa=&xb=&xc= [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?xa=&xb= [L,QSA]
下面是在进行 htaccess 重写时传递目录名称的方法:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+) /index.php?xa=&xb=&xc=&xd= [NC]
RewriteRule ^([^/]+)/([^/]+)/([^/]+) /index.php?xa=&xb=&xc= [NC]
RewriteRule ^([^/]+)/([^/]+) /index.php?xa=&xb= [NC]
但是添加到上面的时候,最后一行也要抓到服务器。com/whatever 情况:
RewriteRule ^([^/]+) /index.php?xa= [NC]
我收到 500 服务器错误...
怎么会?..
谢谢!
有2个问题:
RewriteCond
在第一个规则应用到下一个RewriteRule
之前RewriteRule
. 的正则表达式中没有锚
$
固定代码如下:
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=&xb=&xc=&xd= [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?xa=&xb=&xc= [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?xa=&xb= [L,QSA]