Regex 基本模块重写问题->;mysite.us/user/xyz.php到mysite.us/user/index.php?u=xyz
我第一次试着重写mod_,到目前为止运气不太好。我当前的URL格式为Regex 基本模块重写问题->;mysite.us/user/xyz.php到mysite.us/user/index.php?u=xyz,regex,url,mod-rewrite,Regex,Url,Mod Rewrite,我第一次试着重写mod_,到目前为止运气不太好。我当前的URL格式为http://mywebsite.com/user/index.php?u=123。如何将URL重写为http://mywebsite.com/user/123 到目前为止,我(未成功)尝试了以下操作,导致500个内部服务器错误 RewriteEngine On RewriteRule ^user([^/]*)\.php$ /user/index.php?u=$1 [L] 我哪里做错了?这应该是非常直截了当的。你几乎说对了。您
http://mywebsite.com/user/index.php?u=123
。如何将URL重写为http://mywebsite.com/user/123
到目前为止,我(未成功)尝试了以下操作,导致500个内部服务器错误
RewriteEngine On
RewriteRule ^user([^/]*)\.php$ /user/index.php?u=$1 [L]
我哪里做错了?这应该是非常直截了当的。你几乎说对了。您希望
([\d]+)$
匹配所有数字,直到最后,而不是匹配所有数字,但不包括下一个/
。在用户
之后需要一个/
,最后,删除.php
RewriteEngine On
RewriteRule ^user/([\d]+)$ /user/index.php?u=$1 [L]
注意,我还从/user
中删除了右侧rewrite的前导/
。但这可能不是必须的;除非我自己测试,否则我永远记不起它在前面的/
中的行为
最有可能的是,500错误的原因是重写循环。因为您最后匹配了.php,所以即使是
user/index.php
也会匹配规则,将其放入无限循环。我在http://mysite.us/user/123
将其添加到.htaccess
文件后的页面。另一个url(http://mysite.us/user/index.php?u=123
)仍然按其应有的方式服务页面。@acedanger然后尝试替换我在/user/index.php中将其删除的前导/
,将其更改为[L,R]
,这样它会执行实际的重定向,您可以看到它最终命中的URL。这很奇怪,我希望它能起作用。您在根目录下有.htaccess权限,对吗?不在用户/目录中?不确定这是否重要,但我的网站上有WordPress。以下是我的.htaccess
文件的内容:#在RewriteBase/RewriteRule^index\.php$-[L]RewriteCond%{REQUEST_FILENAME}上启动WordPress RewriteEngine-f RewriteCond%{REQUEST_FILENAME}-重写规则/index.php[L]RewriteRule^/user/([\d]+)$user/index.php?u=$1[L]#END WordPress
其中一些确实很重要。将新规则移到上方。index.php[L]
规则。另外,前导的/
位于右侧(重写),而不是左侧输入端。见上文。