这不起作用:
RewriteRule ^([^/]+)([/]?)$ /index.cgi?l=$1 [NC,L]
这不起作用:
RewriteRule ^([^/]+)/?$ /index.cgi?l=$1 [NC,L]
.htaccess文件中没有其他规则。这是完整版本:
Options -Indexes
Options ExecCGI
AddHandler cgi-script .cgi .pl .q
ErrorDocument 500 /error500.cgi
ErrorDocument 404 /error404.cgi
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]+)/?$ /index.cgi?l=$1 [NC,L]
这可行,但这不是我想要的。
RewriteRule ^([^/]+)/([^/]+)$ /index.cgi?l=$1&a=$2 [NC,L]
我希望第一个斜杠和第二个目录都是可选的。为什么问号不会匹配0或1个实例,就像它应该的那样?我在这里吓到......
答案 0 :(得分:0)
使用$
,您指定它是文本的结尾,因此在/
之后不会匹配任何内容。 (在正则表达式中,^
指定字符串的开头,$
指定结尾)
您可以移除$
,然后它会使第二个参数成为可选项 - 听起来就像您正在寻找的那样。
试试看你的mod_rewrite是否正常工作:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [R,L]