如何重写引擎规则

时间:2013-08-02 23:15:35

标签: .htaccess mod-rewrite url-rewriting rewrite

我正在尝试理解一些规则或重写引擎,但我无法想象如何去做。

我有这个链接:

w**.example.com/index.php?city=new+york

我希望重写这个新内容:

w**.example.com/good-parties-in-new-york

城市的价值可以改变到任何其他城市。 但这里的重点是,如果所有的关键是:

,我只需重写一下

index.php?city =

因为

的index.php?区=

用于其他事物等... 有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

我对你想要达到的目标有点困惑。通常进行URL重写以使URL看起来更好,而不是相反。

您通常希望拥有一个像这样的好网址(您可以与用户沟通):

w**.example.com/good-parties-in-new-york

充当这样一个看起来不那么漂亮的URL的“别名”(=正在提供的实际页面,用户不知道):

w**.example.com/index.php?city=new+york 


使用Rewrite,您可以反向引用正则表达式。在这种情况下,您可以将“nice”URL的一部分转换为RegEx,然后使用后台工作的页面的查询字符串中的变量对其进行反向引用。

E.g:

RewriteEngine On

RewriteBase /
RewriteRule ^good-parties-in-([a-z]+)-([a-z]+)$ index.php?city=$1+$2 [NC,L]

第一个RegEx(([a-z]+))被引用为$1,第二个引用为$2(依此类推)。

请注意,此示例仅适用于由两个单词组成的城市名称,例如纽约,旧金山等。您必须弄清楚城市名称可以包含多少单词,并相应地重写您的代码。 (您可能还需要设置不同的标志。)

另外,你应该确保你的php脚本检查现有的城市名称并抛出适当的错误/如果用户输入幻想名称,如魔术彩虹城市或类似的好派对,则会发出警告。

如果这不是你想要的,也许你可以澄清你的问题?