Mod_Rewrite问题

时间:2009-08-19 14:59:35

标签: php apache mod-rewrite

我正在尝试将example.com/signup和example.com/signup/(带尾部斜杠)转发到example.com/signup.php

我写了以下.htaccess并且它适用于example.com/signup/但是没有尾随斜线就无法工作......我该如何解决这个问题?

RewriteEngine On
RewriteRule ^question/(.*)-(.*) /question.php?qid=$1
RewriteRule ^signup/ /signup.php

3 个答案:

答案 0 :(得分:4)

RewriteEngine On
RewriteRule ^signup/?$ /signup.php

问号使斜线可选,而美元符号表示行尾,因此无法跟随。如果您愿意,可以删除$

您还可以在URL末尾允许任意查询字符串,例如:

RewriteRule ^signup/?(\?.*)?$ /signup.php$1

这将允许您将任何查询参数传递给PHP脚本。例如,网址http://www.example.com/signup?destination=/front-page会被重定向到http://www.example.com/signup.php?destination=/front-page

答案 1 :(得分:3)

使用?量词:

使斜杠可选
RewriteRule ^signup/?$ /signup.php

但我建议您只使用一种表示法并重定向另一种表示法。

答案 2 :(得分:1)

在斜杠后面加上一个问号

RewriteRule ^signup/? /signup.php

? =正则表达式匹配中的可选单个字符