Expand my Community achievements bar.

SOLVED

Enabling Access to Vanity URLs ( vanityUrls.html )

Avatar

Level 1

Hi everyone,

I'm trying to implement the Vanity URLs in AEM to give the authors a way to enter the vanity URLs themselves in the page properties, We are currently using Mod_Proxy and Mod_Rewrites which we want to get off by using Adobe VanityUrls, I'm following these documentations https://blog.rackspace.com/enabling-vanity-urls-with-adobe-experience-manager  and the same is mentioned in Adobe dispatcher configuration as-well here's the link Configuring Dispatcher

My issues/doubts here are

1.Creation of /libs/granite/dispatcher/content/vanityUrls.html file, Does that file get created automatically or do we have to create it manually, It is not getting created automatically for me, when I created it manually It doesn't seem to have anything in the file it's always empty(Do we have to add any code or text in this file)

2.Creation of /tmp/vanity_urls in dispatcher Instance(AWS) Will this be created automatically or to be manually created, It didn't work when I created manually

3. Adobe mentions this point (For each vanity URL that you have configured for an AEM or CQ page, ensure that the /filter configuration denies the URL. If necessary, add a filter that denies the URL. ) in Configuring Dispatcher , Does this mean we have to deny the original path in the dispatcher?

Please clarify on these, Appreciate a lot, Here is the dispatcher.log file

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Found farm publishfarm for 127.0.0.1

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] checking [/nginx_status]

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] request URL has no extension: /nginx_status

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] cache-action for [/nginx_status]: NONE

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Checking vanity URLs

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Vanity URL file (/tmp/vanity_urls) modified, reloading...

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Loaded 0 vanity URLs from file /tmp/vanity_urls

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Filter rejects: GET /nginx_status HTTP/1.1

[Thu Mar 08 16:34:36 2018] [I] [pid 5705] "GET /nginx_status" - - 0ms [publishfarm/-]

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Found farm publishfarm for 127.0.0.1

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] checking [/nginx_status]

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] request URL has no extension: /nginx_status

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] cache-action for [/nginx_status]: NONE

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Checking vanity URLs

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Vanity URL file (/tmp/vanity_urls) modified, reloading...

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Loaded 0 vanity URLs from file /tmp/vanity_urls

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Filter rejects: GET /nginx_status HTTP/1.1

[Thu Mar 08 16:34:41 2018] [I] [pid 5706] "GET /nginx_status" - - 0ms [publishfarm/-]

Thanks in advance

1 Accepted Solution

Avatar

Correct answer by
Level 4

As I see it, you have 4 vanity urls enabled:

/geogov

/testvanity

/geohome

/testing

You should be able to request them through the dispatcher.

The file /tmp/vanity_urls should have the same content. If not, it’s probably bad configurati of the dispatcher or a file permission problem.

Also so note that due to the configured delay of 300s you have to wait that long after publishing the page until the vanity url becomes available.

View solution in original post

9 Replies

Avatar

Level 4

Basically when you use Vanity URLs all the vanity urls are stored in a file. Whenever a request is recieved by the dispatcher first it checks the filter section if there is rule for that request. If not then it consults the vanity url file. Now lets come to your doubts:

1.Yes, Creation of /libs/granite/dispatcher/content/vanityUrls.html file will be automatically. You DONT need to do it manually.

2. Yes, Creation of /tmp/vanity_urls in dispatcher Instance(AWS) Will this be created automatically

3. Adobe mentions this point (For each vanity URL that you have configured for an AEM or CQ page, ensure that the /filter configuration denies the URL. If necessary, add a filter that denies the URL. ) in Configuring Dispatcher , Does this mean we have to deny the original path in the dispatcher?

Yes You need to deny all the URLs which are vanity url from Filter section. These urls will be automatically added to vanity url file which will be used by dispatcher to serve the request.

Hope this helps!

Avatar

Level 1

I tried that but didn't work, Here is my dispatcher configuration, /content/sling-tv/en/testpages/seth.html is the page I had vanity URL on

     55         /filter

     56           {

     57           # deny everything and allow specific entries

     58           /0001 { /type "deny"  /glob "*" }

     59           # open consoles

     60              /0100 { /type "allow" /url "/libs/granite/dispatcher/content/vanityUrls.html" }

     61         #    /0012 { /type "allow" /glob "* /crx/*"    }  # allow content repository

     62         #    /0013 { /type "allow" /glob "* /system/*" }  # allow OSGi console

     63

     64           # allow non-public content directories

     65         #    /0021 { /type "allow" /glob "* /apps/*"   }  # allow apps access

     66           /0022 { /type "allow" /glob "* /bin/*"    }

     67           /0023 { /type "allow" /glob "* /content*" }  # disable this rule to allow mapped content only

     68           /0024 { /type "deny" /url "/content/sling-tv/en/testpages/seth.html" }

     69           /0025 { /type "allow" /url "/libs/granite/dispatcher/content/vanityUrls.html" }

  

    118         /vanity_urls {

    119             /url "/libs/granite/dispatcher/content/vanityUrls.html"

    120             /file "/tmp/vanity_urls"

    121             /delay 300

    122         }

    123

Avatar

Level 4

Did you put a Deny Rule for Caching the "/libs/granite/dispatcher/content/vanityUrls.html" file?

Like this?

/0001 { /type "deny" /glob

"/libs/granite/dispatcher/content/vanityUrls.html" }

Avatar

Level 4

You can find the documentation on how to set up vanity urls at Configuring Dispatcher. Just follow the documentation and install the extra package mentioned there.

Avatar

Level 1

I followed every step of the documentation here Configuring Dispatcher​ and also installed the afore-mentioned package, But it doesn't work I still  see the same dispatcher log errors

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Found farm publishfarm for 127.0.0.1

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] checking [/nginx_status]

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] request URL has no extension: /nginx_status

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] cache-action for [/nginx_status]: NONE

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Checking vanity URLs

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Vanity URL file (/tmp/vanity_urls) modified, reloading...

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Loaded 0 vanity URLs from file /tmp/vanity_urls

[Thu Mar 08 16:34:36 2018] [D] [pid 5705] Filter rejects: GET /nginx_status HTTP/1.1

[Thu Mar 08 16:34:36 2018] [I] [pid 5705] "GET /nginx_status" - - 0ms [publishfarm/-]

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Found farm publishfarm for 127.0.0.1

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] checking [/nginx_status]

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] request URL has no extension: /nginx_status

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] cache-action for [/nginx_status]: NONE

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Checking vanity URLs

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Vanity URL file (/tmp/vanity_urls) modified, reloading...

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Loaded 0 vanity URLs from file /tmp/vanity_urls

[Thu Mar 08 16:34:41 2018] [D] [pid 5706] Filter rejects: GET /nginx_status HTTP/1.1

[Thu Mar 08 16:34:41 2018] [I] [pid 5706] "GET /nginx_status" - - 0ms [publishfarm/-]

Avatar

Level 4

Try to run this on your dispatcher manually:

curl -v http://<insert hostname of your publisher here>:4502/libs/granite/dispatcher/content/vanityUrls.html

Does it work? Or do you have an error?

And did you publish your content page after you entered the vanity URL property?

Avatar

Level 1

Did you mean 4502 or 4503? here is the response for both

[root@i-043558b2508b470c1 saiganesh.boggavarap]# cd /

[root@i-043558b2508b470c1 /]# curl -v http://publish.intd-slingtv.com:4502/libs/granite/dispatcher/content/vanityUrls.html

* About to connect() to publish.intd-slingtv.com port 4502 (#0)

*   Trying 10.235.13.12...

* Connection refused

* Failed connect to publish.intd-slingtv.com:4502; Connection refused

* Closing connection 0

curl: (7) Failed connect to publish.intd-slingtv.com:4502; Connection refused

[root@i-043558b2508b470c1 /]# curl -v http://publish.intd-slingtv.com:4503/libs/granite/dispatcher/content/vanityUrls.html

* About to connect() to publish.intd-slingtv.com port 4503 (#0)

*   Trying 10.235.13.12...

* Connected to publish.intd-slingtv.com (10.235.13.12) port 4503 (#0)

> GET /libs/granite/dispatcher/content/vanityUrls.html HTTP/1.1

> User-Agent: curl/7.29.0

> Host: publish.intd-slingtv.com:4503

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Fri, 16 Mar 2018 15:54:17 GMT

< X-Content-Type-Options: nosniff

< Content-Type: text/plain; charset=UTF-8

< Content-Length: 38

<

/geogov

/testvanity

/geohome

/testing

* Connection #0 to host publish.intd-slingtv.com left intact

[root@i-043558b2508b470c1 /]# ^C

[root@i-043558b2508b470c1 /]#

Yes, I did publish the Page after entering the Property!

Thanks,

Ganesh.

Avatar

Correct answer by
Level 4

As I see it, you have 4 vanity urls enabled:

/geogov

/testvanity

/geohome

/testing

You should be able to request them through the dispatcher.

The file /tmp/vanity_urls should have the same content. If not, it’s probably bad configurati of the dispatcher or a file permission problem.

Also so note that due to the configured delay of 300s you have to wait that long after publishing the page until the vanity url becomes available.