我希望创建一些重写规则。以下是我想要更改的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=wof
http://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]
添加到每个进一步的规则中。这防止了重写引擎中的循环,我怀疑这就是您未指定错误的原因。