Jump to content

URL encoding of URL Segments possible?


Klenkes
 Share

Recommended Posts

A client wants to use landing pages coming from Google ads, and needs to hand over a keyword and a title for the landing page.

The URL would look like this: ..../l2/keyword/Funny title with løts of special chåracters änd spaces/ (Just an example)

I tried to encode the URL in different ways but not even spaces work and result in a "404 Page not found".

Then I found this Github issue: https://github.com/processwire/processwire-issues/issues/720
At least I know that I am not the only one with this kind of problem.

The client is a very pragmatic fellow and suggested to custom-encode the segments like: (don't try to read it)
..../l2/keyword/Funny_S_title_S_with_S_l_o1_ts_S_of_S_special_S_ch_a2_racters_ae_nd_S_spaces/
and then replace all the _S_ _a2_ with the REAL characters in the template.

Mhh... well... sure I could do that, but I don't like it, and editors would have to write the segments with a translation sheet!

Anyone have a better idea?

PW 3.0.98 PHP 7.x

Link to comment
Share on other sites

Do you really need it human readable? In this case GET and urlencode() is maybe a safer option.
 

$query = "?keywords=" . urlencode('løts of special chåracters änd'); // "?keywords=l%C3%B8ts+of+special+ch%C3%A5racters+%C3%A4nd"

$keywords = urldecode($input->get->keywords);  // "løts of special chåracters änd"

 

  • Like 2
Link to comment
Share on other sites

Thanks.

The problem is that editors would have to write this in a Google tool?(I don't know...) and I can't urlencode it in a template.
Perhaps I write a tool for them or they use an online tool for the encoding.

But GET parameter seem the better option.

  • Like 1
Link to comment
Share on other sites

Sometimes I wonder how I tie my shows in the morning... thinking way too complicated ?
So many years and I love Processwire even more every day!

Everything I need is already there. I do it in the backend with two fields(text) and FieldtypeRuntimeMarkup generates urlencode($page->encodekey)) and so on... and the result is the complete URL for the editors to copy. And even a button to test it!

$prefix = $page->httpUrl . '?';
$l_key = urlencode($page->encodekey);
$l_title = urlencode($page->encodetitle);
$gclid = '123456789';
$result = '<textarea rows="5">'.$prefix . 'keyword=' . $l_key . '&title=' . $l_title . '&gclid=' . $gclid . '</textarea>';
return $result;

 

  • Like 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...