使用生成密钥使用PHP重写URL

时间:2014-02-22 18:04:39

标签: php regex apache .htaccess

我想用生成的密钥重写我的URL。 所以...

My base URL -> www.example.com
My problematic URL -> www.example.com/actions.php
And the final URL I want to be like www.example.com/41f1341df14r12

问题是我想根据我的数据库(MYSQL)中的密钥(41f1341df14r12)生成每个页面。

P.S。我想使用PHP。

谢谢!

更新:

很抱歉让人困惑。我的英语不太好。

所以...我想要的是什么:

在index.php中我有一个<input type="text">。当用户按下提交按钮时,我的PHP生成一个密钥(41f1341df14r12)并将两个(密钥和输入文本)存储在数据库中。我希望当用户按下提交以转到包含

等URL的页面时
www.example.com/41f1341df14r12

并在该页面上查看他的消息。

我希望现在明白:D

2 个答案:

答案 0 :(得分:4)

首先你的apache需要mod_rewrite Url。然后,您可以在.htaccess中使用此代码将密钥重定向到可以处理密钥的php文件。

RewriteEngine On
# Rewrite only if its not a file
RewriteCond %{REQUEST_FILENAME} !-f
# and if its not a directory
RewriteCond %{REQUEST_FILENAME} !-d
# rewrite the request to action.php
RewriteRule .* action.php [L]

在PHP脚本中,您可以从超级全局变量$ _SERVER ['REQUEST_URI']中读取。

<?php
echo substr($_SERVER['REQUEST_URI'], 1); //remove the first /

备选方案,您可以将密钥重定向到GET变量:

RewriteRule (.*) action.php?key=$1 [L]

答案 1 :(得分:3)

实现此目的的一种方法是使用 URL重写。这是当Web服务器打开某个(PHP)文件时,如果地址与其中一个设置规则匹配。

每个Web服务器的流程都不同,我假设您使用的是apache。

您需要在Web服务器的根目录中创建一个.htaccess文件,并添加以下行:

RewriteEngine On 
RewriteRule    ^([a-z0-9]+)/?$    handler.php?key=$1    [L] 

第一行启用URL重写。第二个创建一条规则,说:“如果请求的URL与格式'example.com/key/'匹配,请打开文件'handler.php'并将密钥传递给它。”

在您的PHP文件(此示例中为handler.php)中,您可以使用$_GET['key']访问密钥并使用它来生成页面。

有关详细信息,请参阅this tutorial

注意:

  • 创建.htaccess后,您可能需要重新启动Web服务器 文件。
  • 这与大写字母不匹配,请改用^([A-Za-z0-9]+)/?$
  • 如果您不使用共享主机,则可能需要在apache mod_rewrite中启用httpd.conf(请参阅教程)。