I have setup the AMP modules, but I can't add ?amp tag on the url dynamically.

i.e. When it sees (using the mobile detect module), the site is browsed from devices, it will automatically add "?amp" in the url, so that amp theme is selected and use will see all content in AMP theme.

If some one can help, will be great.

thanks

Comments

shafiqhossain created an issue. See original summary.

shafiqhossain’s picture

Just adding, I am using Drupal 7 and here is the module, https://www.drupal.org/project/amp

Anonymous’s picture

I solved this problem for Drupal 8 in the .htaccess with the following lines, using the solution of http://stackoverflow.com/questions/3680463/mobile-redirect-using-htaccess . This will work also for Drupal 7.

RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC]
RewriteRule ^ http%{ENV:protossl}://%{HTTP_HOST}%{REQUEST_URI}?amp [L,R=301]

Drupal 8 uses heavy caching and as a consequence the result of http_host and detecting mobile is not reliable. I even experienced errors after turning caching off. Adding a query string in de .htaccess avoids this and is reliable.

Maybe this recipe maybe can be added in the Readme to change the .htaccess?

summit’s picture

Hi,

Would this also work for drupal 7? Any comments please?

greetings, Martijn

Anonymous’s picture

Yes this also will work for D7.

zietbukuel’s picture

The .htaccess approach doesn't seem to be working. It redirects me back the homepage. That's all it does.

WebWalker3D’s picture

Why not use a module like Themekey which is designed to do this feature?

Create a condition where anything mobile uses the amp theme by default. I think you misunderstand the general purpose of ?amp though.

?amp isn't supposed to be for "mobile themes" it's supposed to be on results in SERPs to indicate you have an Accelerated Mobile Page hence the title of the project.

WebWalker3D’s picture

Status: Active » Closed (works as designed)
Issue tags: -ACCELERATED MOBILE PAGES PROJECT, -alter url
pranay agarwal’s picture

Any way of adding "?amp" into url for mobile devices in Drupal 8 ?

kkindorf1’s picture

I was originally under the same impression as the original poster for this discussion. So hopefully my response gives some clarity to people.

When the amp module is set up correctly and a content type is chosen to use the amp theme you come up with, then in those pages, inside the head of the document, the module will add a new<link rel="amphtml">Yoursite.com?amp</link> tag automatically. This is the tag Google's web crawlers look for. If the tag is there, the web crawlers go to that url, validate the page's html and then the page is added to Google's cache. So there's no need to manually or dynamically add the ?amp query to your page urls.

Reference: https://www.ampproject.org/docs/fundamentals/discovery

So when in doubt, check the page source!