友好的非强制参数-url
non mandatory parameter in a friendly-url
我想为 someone.php
目录写一个漂亮的 url。问题是它有时需要两个参数,有时只需要一个。我无法处理第二个参数。
只要1个参数我就可以轻松编写
RewriteRule ^someone/([^.?/]+)$ /someone.php?someone= [L]
然而,当我尝试添加第二个参数时,我无法成功。我试过这样的东西
RewriteRule ^someone/([^.?/]+)/([^.?/]*)$ /someone.php?someone=&topic= [L]
您可以在您的 Regex 模式中将第二个捕获组设置为可选,以便该规则可以处理您的两个新网址。
^someone/([^.?/]+)/?([^.?/]*)?$
上面的模式将同时匹配 uris /someone/foo/bar
和 /someone/foo
.
这是您的完整规则
RewriteRule ^someone/([^.?/]+)/?([^.?/]*)?$ /someone.php?someone=&topic= [L]
我想为 someone.php
目录写一个漂亮的 url。问题是它有时需要两个参数,有时只需要一个。我无法处理第二个参数。
只要1个参数我就可以轻松编写
RewriteRule ^someone/([^.?/]+)$ /someone.php?someone= [L]
然而,当我尝试添加第二个参数时,我无法成功。我试过这样的东西
RewriteRule ^someone/([^.?/]+)/([^.?/]*)$ /someone.php?someone=&topic= [L]
您可以在您的 Regex 模式中将第二个捕获组设置为可选,以便该规则可以处理您的两个新网址。
^someone/([^.?/]+)/?([^.?/]*)?$
上面的模式将同时匹配 uris /someone/foo/bar
和 /someone/foo
.
这是您的完整规则
RewriteRule ^someone/([^.?/]+)/?([^.?/]*)?$ /someone.php?someone=&topic= [L]