.htaccess保留查询字符串的内部重写

.htaccess保留查询字符串的内部重写,.htaccess,redirect,joomla,joomla2.5,.htaccess,Redirect,Joomla,Joomla2.5,我需要重写一个url,为内部重写保留一个查询字符串。 另一个用于展示 因此,当前的url: www.mysite.com/staff/teachers?id=37:john 需要在内部重写为: www.mysite.com/staff/teachers/37 不太确定从哪里开始,我正在尝试,但不知道如何访问“id=”和“:”之间的数字以用于重写 谢谢您的帮助。您不能重写“用于显示”的URL。你所能做的就是告诉浏览器加载一个新的URL。当浏览器请求新URL时,服务器无法知道加载该URL的原因(

我需要重写一个url,为内部重写保留一个查询字符串。 另一个用于展示

因此,当前的url:

www.mysite.com/staff/teachers?id=37:john
需要在内部重写为:

www.mysite.com/staff/teachers/37
不太确定从哪里开始,我正在尝试,但不知道如何访问“id=”和“:”之间的数字以用于重写

谢谢您的帮助。

您不能重写“用于显示”的URL。你所能做的就是告诉浏览器加载一个新的URL。当浏览器请求新URL时,服务器无法知道加载该URL的原因(即,它是先前重定向的结果),因此新URL需要包含足够的信息以加载实际页面

换句话说,您必须:

  • 在“漂亮”的URL中包括ID,例如
    www.mysite.com/staff/teachers/37 john
  • 让您的应用程序根据内部重写的URL中的用户名查找用户,例如
    www.mysite.com/staff/teachers?lookup_name=john

好的,谢谢。因此,假设我只想重写到www.mysite.com/staff/teachers/37,这是怎么做到的?好吧,你真的想从这个URL重写:记住,重写的输入是来自浏览器的内容,输出是加载的内容,或者是告诉浏览器使用的新URL。因此,您希望匹配
/staff/teachers/([0-9]+)
,并在查询字符串中使用捕获的
$1
;网上有很多这种简单重写的例子。找不到一个例子来告诉我如何只保留数字(在“?id=”和“:”@buzibuzi之间)。这很简单,只需匹配
?id=([0-9]+):(.*)
。但是您没有
?id=
-这就是您正在生成的位。就像我说的,您需要从浏览器发送的内容开始,即
/staff/teachers/37
。好的,如果url保持不变,我就没有问题了。问题是它是由Joomla在从1.5升级到2.5后生成的,我想替换这些url