重写引擎多个规则

时间:2012-01-22 03:32:34

标签: php mod-rewrite

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

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=wof http://www.mysite.com/wof/nominate更改为nominate.php?type=nominate

如果可能的话,我想在网址中添加更多内容,例如用户ID。

我试图将我的两条线加在一起,它们分开工作,但页面错误并显示500错误。

我很感激帮助。

1 个答案:

答案 0 :(得分:1)

最重要的是订单问题:Everything You Ever Wanted to Know about Mod_Rewrite Rules but Were Afraid to Ask?

您添加扩展程序的规则应该是第一个,然后稍加调整:

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

这确保它只重写真正存在为.php脚本的请求。像(?<!\.php)这样的RewriteRule中的断言可能具有相同的效果。 (更简单的是使用MultiViews代替这个RewriteRule。)

最后,您可能会为每个进一步的规则添加[L]。这可以防止重写引擎中的循环,我怀疑这是你未指定的错误。