Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 基本模块重写问题->;mysite.us/user/xyz.php到mysite.us/user/index.php?u=xyz_Regex_Url_Mod Rewrite - Fatal编程技术网

Regex 基本模块重写问题->;mysite.us/user/xyz.php到mysite.us/user/index.php?u=xyz

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] 我哪里做错了?这应该是非常直截了当的。你几乎说对了。您

我第一次试着重写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]

我哪里做错了?这应该是非常直截了当的。

你几乎说对了。您希望
([\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]
规则。另外,前导的
/
位于右侧(重写),而不是左侧输入端。见上文。