1

我读过很多关于如何使用重写规则和正则表达式的网站,但它们都倾向于针对特定示例而没有分解每一个语法并实际上帮助我学习概念以便我可以编写我需要的代码类型。

任何帮助深表感谢!

我有一个这样的网址http://www.mysite.com/myphp.php?x=1A&y=2B&c=some1&d=some2

我希望这样重写:http ://www.mysite.com/some1/some2

这看起来很简单,但正如我所提到的,我还没有遇到一个网站以一种我可以弄清楚如何使其工作的方式来解释这些概念。

在此特定示例中,?x= 始终相同,而 1A 则不同。这同样适用于 php 字符串的其他每个部分,但是,我假设重写规则应该处理 .php 文件和我真正感兴趣的变量之间的任意数量的字符。

再次感谢任何可以帮助解释这一点或提供有关重写规则和正则表达式的高质量资源来帮助我学习它的人。

4

2 回答 2

3

像这样的规则将起作用(经过测试):

RewriteRule ^([^/]+)/([^/]+) myphp.php?x=1A&y=2B&c=$1&d=$2 [L]

这包括三个部分:

  1. RewriteRule指定这是重写规则(与条件或其他指令相反)。命令是将第 2 部分重写为第 3 部分。
  2. 这部分是一个正则表达式,只有当 URL 匹配这个正则表达式时,规则才会运行。在这种情况下,我们说 - 查找字符串的开头,然后是一堆非斜线字符,然后是一个斜线,然后是另一束非斜线字符。括号表示括号内的部分将被存储以供将来参考。
  3. 最后,这部分说以这种格式重写给定的 URL。$1 和 $2 指的是被捕获和存储的部分(反向引用)

至于mod_rewrite上的优质资源,过去我通过搜索“mod_rewrite教程”找到了一些(我认为对于初学者来说是一个很好的)。他们大多是这样的,所以如果有什么你不明白的具体内容,请在继续之前把它排除在外。我不确定如何解释语法。

正则表达式是另一回事,同样,那里有许多资源 - 包括初学者。一旦你掌握了正则表达式的基本窍门,你就可以使用Python re 页面作为参考。

于 2012-05-09T00:29:12.027 回答
0

添加到.htaccess 之类的东西(未测试)?

RewriteEngine on
RewriteRule ^/([0-9a-z]+)/([0-9a-z]+)/$ /?c=$1&d=$2 [L]

假设 x 和 y 不感兴趣。

于 2012-05-09T00:09:40.877 回答