重写引擎多条规则


Rewrite Engine Multiple Rules

我希望创建一些重写规则。以下是我想要更改的url类型。

http://www.mysite.com/profile/kwelch更改为profile.php?username=kwelch

这是我的台词:RewriteRule ^profile/([^/.]+)/?$ profile.php?username=$1

我还希望重写所有年龄,将.php添加到任何页面。

RewriteRule ^(.*)$ $1.php [L, QSA]

我希望将这些工作结合起来,并添加更多与第一个逻辑相同的内容。

其他网址:

http://www.mysite.com/wof/vote更改为vote.php?type=wofhttp://www.mysite.com/wof/nominate更改为nominate.php?type=nominate

如果可能的话,我想添加更多的url,比如用户id。

我试着把我的两行加在一起,它们分别很好地工作,但页面出现错误,显示500错误。

我很感激你的帮助。

这首先是一个顺序问题:关于Mod_Rewrite规则,你想知道但又害怕问的一切?

您添加扩展的规则应该是第一个,但略有调整:

RewriteCond %{SCRIPT_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L,QSA]

这样可以确保它只重写真正以.php脚本形式存在的请求。RewriteRule中的断言(如(?<!'.php))可能具有相同的效果。(用MultiViews代替这个重写规则会简单得多。)

最后,您可能会幸运地将[L]添加到每个进一步的规则中。这防止了重写引擎中的循环,我怀疑这就是您未指定错误的原因。