我想用生成的密钥重写我的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)并将两个(密钥和输入文本)存储在数据库中。我希望当用户按下提交以转到包含
www.example.com/41f1341df14r12
并在该页面上查看他的消息。
我希望现在明白:D
答案 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。
注意:
^([A-Za-z0-9]+)/?$
。mod_rewrite
中启用httpd.conf
(请参阅教程)。