我正在尝试了解一些规则或重写引擎,但我不知道该怎么做。
我有这个链接:
w**.example.com/index.php?city=new+york
我想重写这个新的:
w**.example.com/good-parties-in-new-york
city 的值可以更改为任何其他城市。但这里的重点是我只有在所有关键是:
index.php?city=
因为
index.php?zone=
用于其他事情等...有什么建议吗?谢谢。
我正在尝试了解一些规则或重写引擎,但我不知道该怎么做。
我有这个链接:
w**.example.com/index.php?city=new+york
我想重写这个新的:
w**.example.com/good-parties-in-new-york
city 的值可以更改为任何其他城市。但这里的重点是我只有在所有关键是:
index.php?city=
因为
index.php?zone=
用于其他事情等...有什么建议吗?谢谢。
我对你想要达到的目标有点困惑。URL 重写通常是为了使 URL 看起来更好,而不是相反。
您通常希望有一个像这样的好 URL(您将与您的用户交流):
w**.example.com/good-parties-in-new-york
充当像这样看起来不太好看的 URL 的“别名”(= 正在提供的实际页面,用户不知道):
w**.example.com/index.php?city=new+york
使用 Rewrite,您可以反向引用正则表达式。在这种情况下,您可以将“nice” URL 的一部分转换为 RegEx,然后您可以使用后台运行的页面的查询字符串中的变量进行反向引用。
例如:
RewriteEngine On
RewriteBase /
RewriteRule ^good-parties-in-([a-z]+)-([a-z]+)$ index.php?city=$1+$2 [NC,L]
第一个 RegEx ( ([a-z]+)
) 被引用为$1
,第二个被引用为$2
(依此类推)。
请注意,此示例仅适用于由两个单词组成的城市名称,例如纽约、旧金山等。您必须弄清楚城市名称可以包含多少个单词并相应地重写您的代码。(您可能还必须设置不同的标志。)
另外,您应该确保您的 php 脚本检查现有的城市名称,并在用户输入诸如 good-parties-in-magical-rainbow-city 或类似名称的幻想名称时抛出适当的错误/发出警告。
如果这不是您想要的,也许您可以澄清您的问题?