Url rewriting 将URL参数重写为目录-就像维基百科URL一样

Url rewriting 将URL参数重写为目录-就像维基百科URL一样,url-rewriting,wiki,Url Rewriting,Wiki,我正在运行wiki,URL如下所示: /wiki/index.php?title=MyTitle 但我希望它看起来像这样: /wiki/MyTitle 我该怎么做?我想这可以通过.htaccess和重写规则来完成,我已经在这个网站和谷歌上搜索过了,但是我找不到任何真正对我有帮助的东西。现在我在/wiki/目录的.htaccess中找到了这个 RewriteEngine on RewriteOptions MaxRedirects=1 RewriteRule ^(.+)

我正在运行wiki,URL如下所示:

/wiki/index.php?title=MyTitle

但我希望它看起来像这样:

/wiki/MyTitle

我该怎么做?我想这可以通过.htaccess和重写规则来完成,我已经在这个网站和谷歌上搜索过了,但是我找不到任何真正对我有帮助的东西。现在我在/wiki/目录的.htaccess中找到了这个

RewriteEngine      on
RewriteOptions MaxRedirects=1
RewriteRule        ^(.+)     index\.php\?title=$1     [L]

但这只是将我重定向到/wiki/index.php?title=index.php,并抛出一个“重定向循环检测到!”错误。我不确定我是否真的理解这些东西是如何工作的。

与其制定复杂的规则,不如将所有流量路由到index.php,然后将“子目录”作为参数处理。我过去常帮我这样做。从该网站:

Options +FollowSymLinks
IndexIgnore */*
# Turn on the RewriteEngine
RewriteEngine On
#  Rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
将其放在.htaccess文件中,所有流量都将转到index.php。然后将index.php编写成一个“路由器”,它将加载并显示服务器上的其他php脚本

您可以通过制作数组(同样,从链接站点)从PHP访问参数:

然后,
$requestURI
将是给定参数的数组,因此:

/wiki/MyTitle
将变成:

Array ( [0] => [1] => wiki [2] => MyTitle )

wiki软件难道没有处理这个问题的内置功能吗?可能。我必须弄清楚它到底是什么软件(我没有选择或安装它),并查阅文档。这主要是有效的。。。但因为我使用
标题(“位置:…”
在我的PHP脚本中重定向到实际页面,它会更改用户地址栏中的内容。我可以通过使用
include
而不是重定向来防止这种情况,但这似乎。。。难看。为什么不能对新URL使用
header()
重定向方法呢?所以类似于
标题(“位置:http://www.whatever.com/wiki/MyTitle");。因为这些URL实际上并不指向任何东西。我希望这样,当您尝试访问
/wiki/MyTitle
时,它会为您提供
/wiki/index.php?title=MyTitle
的内容,但不会更改地址栏中的地址。好的,我觉得我们不在同一页上。您希望用户转到“wiki/MyTitle”并停留在那里(即,不重定向),但同时,您希望用户看到“index.php?title=MyTitle”将输出什么,对吗?在这种情况下,您必须更改index.php以“理解”我在答案中描述的参数。现在,index.php获得如下标题参数:
$title=$\u GET('title')或类似的东西。完全摆脱它,现在让它变成这样:
$title=$requestURI[2]
在上面答案中的代码之后。这有帮助吗?这样做的原因是,
$requestURI[2]
将有第二个参数。因此,转到“wiki/MyTitle”,apache会将所有流量路由到index.php,因为您将规则放入了.htaccess文件中。因此,
$requestURI[2]
将是“MyTitle”。把它弄得乱七八糟,告诉我它是否有效(或无效)。
Array ( [0] => [1] => wiki [2] => MyTitle )