带有可选斜杠的简单重写规则

Simple Rewrite rule with optional slash

我只需在我的 htaccess 中添加一个重写规则即可:

http://mysite/toto -> http://mysite/page.php?c=toto

结果相同:

http://mysite/toto/ -> http://mysite/page.php?c=toto

我的 htaccess 文件:

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^(.*)/?$  page.php?c=  [L]

适用于 URL "http://mysite/toto"

但没有 URL "http://mysite/toto/" --> result: http://mysite/page.php?c=toto/

如何解决这个问题?

好的,所以你 运行 进入 "greedy" 匹配,.* 匹配所有内容。你可以做的是得到每个不是 / 的字符:

^([^/]).

这表示:

  1. 比赛开始^
  2. 匹配除/以外的任意字符:[^/]
  3. 将第 2 步匹配引用为 $1 the parens do that

这会做你想做的。请注意,如果您必须转义 / 字符,则需要使用 /。我认为您不需要使用 htaccess 文件。

好的谢谢! 我试试这个,它看起来很管用!

RewriteBase /
RewriteRule ^(.*[^/])/?$ page.php?c= [QSA,L]

url=http://localhost/toto/ --> result= http://localhost/page.php?c=toto

url=http://localhost/toto --> result= http://localhost/page.php?c=toto