Multiple Dynamic SEO/shortened URLs in PHP
I have a PHP system containing user-generated pages, arranged in a complex and non-uniform hierarchy. Pages are created by users, and some pages hav开发者_运维百科e sub-pages etc.
I have been asked to add a shortened-url system. So any page, at any point in the hierarchy, can be accessed via domain.com/XXXX where XXXX can be anything - we are not interested in SEO here, the reasoning behind this is its a very social-media driven project, and we would like our users to be able to tweet/other the url of any page they like.
I expect something like; we start on AAAA and head towards ZZZZ as each page is created. Each of these slugs would be stored in the database alongside the actual url eg domain.com/projects.php?p=32
I know mod-rewrite enough to convert domain.com/XXXX into domain.com/index.php?slug=XXXX, but where to go from there leaves me a little stumped. index.php can do the database lookup and header() the user to the actual url, but the slug-url needs to stay in the address bar.
Would using an iframe in index.php be a terrible idea?
I hope thats clear, thanks for reading!
If you used the [R=301]
directive at the end of an .htaccess rewrite rule, it will act as a redirect. Meaning if you go to domain.com/XXXX it will show domain.com/index.php?slug=XXXX in the address bar. Is that the behavior you're trying to accomplish?
Also, I wouldn't use a header()
, I'd make your index page be the processing page. Either that, or use an include()
method instead.
I think using an iframe is a terrible idea, and will lead to a brittle site.
Is there any reason why index.php
can't act as a front controller, so instead of redirecting it just shows the page? You should just be able to include
the page.
Alternatively, could you not rewrite domain.com/XXXX
to domain.com/projects.php?slug=XXXX
, and do a slug->p conversion at the top of projects.php
? Then the conversion would just need to record slugs and page ids, rather than slugs and full URLs.
精彩评论