howto rewrite engine rule

假如想象 提交于 2019-12-13 05:43:42

问题


i'm trying to understand some rules or rewrite engine but i can't figure how to do it.

i have this link:

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

and i wish to rewrite to this new:

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

the value of city can change to any other city. but the point here is I only what to rewrite if all the key is:

index.php?city=

because the

index.php?zone=

is used for other things, etc... any suggestion? thanks.


回答1:


I'm a little confused on what exactly you want to achieve. URL rewriting is normally done to make URLs look nicer, not the other way around.

You would typically want to have a nice URL like this (which you'd communicate to your users):

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

act as an "alias" for a not-so-nice looking URL like this (= the actual page being served, unbeknownst to the users):

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


With Rewrite, you can backreference regular expressions. In this case, you could convert parts of the "nice" URL into RegEx's which you would then backreference with variables in the query string of the page working in the background.

E.g.:

RewriteEngine On

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

The first RegEx (([a-z]+)) is referenced as $1, the second as $2 (and so on).

Note that this example will only work for city names consisting of two words, like New York, San Francisco etc. You'll have to figure out of how many words city names can consist of and rewrite your code accordingly. (You might also have to set different flags.)

Plus, you should make sure that your php script checks against existing city names and throws an appropriate error/gives out a warning if users enter fantasy names like good-parties-in-magical-rainbow-city or similar.

If this isn't what you're looking for, maybe you could clarify your question?



来源:https://stackoverflow.com/questions/18027520/howto-rewrite-engine-rule

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!