开发者

URL rewriting tip needed

开发者 https://www.devze.com 2023-04-05 15:43 出处:网络
I made some searches on the web about URL rewriting, and found some good indications, but not what I hoped to find. For example, I have www.example.com?id=11 and I\'d like to sh开发者_如何学Cow someth

I made some searches on the web about URL rewriting, and found some good indications, but not what I hoped to find. For example, I have www.example.com?id=11 and I'd like to sh开发者_如何学Cow something like www.example.com/mike where mike is the user for that id.

The best solution by now is to use rewrite as:

www.example.com/11/mike to www.example.com?id=11

I know how to write that rule, but is there a possibility to call that without the id number? Someway, to hide it?


if you wanted /mike you would have to intercept that in your code and store it as an index. So instead of doing a search on id = 11, you'd do slug = mike instead.

If you go this route you will need to make the associated field an index to prevent any unnecessary database load.


First, you're rewriting www.abc.com/11/mike to www.abc.com?id=11, not the other way around, i.e., the first external request is written to the second internal request, which is then processed.

To answer your question, no, unless your application knows how to fetch the object from mike instead of 11. If it does, you for instance could rewrite:

www.abc.com/11/mike to www.abc.com/?id=mike

or you could do it without query strings at all and read the data from $_SERVER['PATH_INFO'], as long as your web server is correctly configured.


Not really. If you need the data passed to the script as a $_GET variable then it has to be passed through the URL.

You can switch over to using $_POST data instead of $_GET, but I wouldn't recommend that. You can also just change what your script expects and user the username instead of the ID, then you'd have to pass the username (just like you want) and can drop passing the ID altogether.

0

精彩评论

暂无评论...
验证码 换一张
取 消