模仿这个strawpoll.me的页面创建/ url重写效果

时间:2015-06-29 14:11:04

标签: php .htaccess

我希望按照这里显示的内容做一些事情: http://strawpoll.me

当您在那里创建投票时,它会为您提供一个唯一的网址,您和其他任何人都可以通过访问该网址来访问该网址。

现在很明显,他们不能将包含民意调查的数千个单独文件弄乱他们的服务器,我假设他们有一个基本模板,他们从数据库加载民意调查信息。

我想制作一个表单,当用户提交表单时,他们会获得自己独特的链接,就像它在strawpoll网站上的链接一样。

2 个答案:

答案 0 :(得分:1)

因为它是一个简单的动态页面创建,只需要很少的文件......

  1. 轮询创建页面是静态的
  2. 收集数据并插入db
  3. processing.php文件
  4. 动态轮询呈现页面polls.php,它根据分配给轮询的自动递增ID呈现轮询。
  5. 返回结果的polls-results.php
  6. http://thepollsite.com/12345

    .htaccess用于标识要呈现的轮询以及要呈现的结果。

    # Turns on Mod-Rewrite Engine
    # ----------------------------------------------------------------
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    
    # Poll Pages 
    # ----------------------------------------------------------------
    RewriteRule ^([^/]+)/?$ polls.php?id=$1 [QSA,L]
    RewriteRule ^([^/]+)/?$ polls-results.php?id=$1 [QSA,L]
    

    polls.phppolls-results.php上,您都会获得$poll_id = $_REQUEST['id'];的ID并从那里处理。

    嵌入代码在一个简单的对话框中呈现,该对话框提供iframe代码,如图所示。

    虽然有些装饰你可以添加...但这真的是一个简单的过程。

答案 1 :(得分:1)

.htaccess方面,您需要以下内容:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

有了这些,服务器上已经存在的所有文件/目录请求都将运行index.php,而不是显示404页面。然后,要获取请求的路径,请在$_SERVER['PATH_INFO']中使用index.php

这是使用" clean"的一般方法。 PHP的网址。它可能已经在另一个SO答案中说过,但很难找到,所以我再写一遍。

相关: Why use a single index.php page for entire site?How to do URL re-writing in PHP?