在Red Hat服务器上使用Apache,我试图在我们的网站上重写成员商店的URL:
domain.com/store.php?url=12345
为:
domain.com/12345
使用这些规则,如果我总是记得添加结尾斜杠,我可以使用它:
Options -Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^store/url/(.*)$ store.php?url=$1
RewriteRule ^(.*)/$ store.php?url=$1
domain.com/12345/有效, 但domain.com/12345不起作用。
删除Rewrite代码最后一行中的斜杠会破坏很多东西。有没有办法让这个有或没有结束斜线?
答案 0 :(得分:0)
如果你做了斜杠optional怎么办?此外,您可能需要指定比(.*)
更具体的内容,因为domain.com/a/b/c/d/e会匹配。相反,您可以使用否定的character class来指定斜杠以外的所有内容。
RewriteRule ^([^/]*)/?$ store.php?url=$1
或者,如果您只想捕获数字,则可以使用\d
shorthand class(与任何数字匹配)以及+
,其中指定必须至少有一位数字本:
RewriteRule ^(\d+)/?$ store.php?url=$1
答案 1 :(得分:0)
您使用^(.*)$
的尝试失败,因为它会匹配任何网址路径。使用比.*
更具体的模式,可能\d+
只允许一个或多个数字:
RewriteRule ^(\d+)$ store.php?url=$1