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

时间:2015-07-24 17:12:11

标签: regex apache .htaccess rewrite rule

我只需在我的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=$1  [L]

适用于网址“http://mysite/toto

但没有网址“http://mysite/toto/” - >结果:http://mysite/page.php?c=toto/

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

好的,所以你遇到了贪婪的"匹配,。*匹配一切。你能做的就是用compile 'com.android.support:cardview-v7:21.0.+' 得到每个不是/的角色:

^([^ /]的)。

这说:

  1. 匹配开始^
  2. 匹配除/:[^/]
  3. 之外的任何字符
  4. 将第2步匹配引用为$ 1 the parens do that
  5. 这将做你想要的。请注意,如果必须转义/字符,则需要使用/。我不认为您需要使用htaccess文件。

答案 1 :(得分:0)

好的,谢谢! 我试试这个看起来有效!

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

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

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