我有很多用户,每个用户都有http://www.mysite.com/folder/artist_id.php?id=33
等网站页面用户需要能够设置自己的简单网址,例如http://www.mysite.com/userguy,该网址会重定向到上一页。
我知道如何使用RewriteRule在.htaccess中手动编写这些内容,但是,例如,用户有一个用php和javascript创建的整个控制面板,并且有必要允许他们自己选择名称并自动输入代码但是我不知道是否已经有一种简单的方法来设置或通过代码添加到.htaccess文件中,或者我应该只打开某种文件,重写一下,或者什么是安全的。
顺便说一下,我并不担心像我们网站中的现有文件夹或php文件那样命名自己的问题。用户受到限制并且需要获得批准,因此不应该成为问题。答案 0 :(得分:2)
或者,重新设计数据库以处理自然键而不是数字键 这将保存你所有的URL去映射33 = userguy等,你的网址将更友好,可猜测和seo友好,浏览你的数据库将更容易启动。
username (PK)
答案 1 :(得分:1)
您可以设置一个重写规则,将所有请求(如http://www.mysite.com/userguy)发送到单个php脚本,然后执行“翻译”。不一定必须通过重写规则来完成,也可以是ErrorDocument handler。在这种情况下,原始请求路径可以在$ _SERVER ['REQUEST_URI']中找到。
答案 2 :(得分:1)
不涉及使用PHP打开,修改和保存.htaccess文件的正确解决方案将使用各种“路由器”。请考虑以下事项:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
这样做是将/ userguy重写为/index.php?q=userguy,但前提是/ userguy不是文件系统中存在的目录或文件。这对用户透明地发生。 index.php然后负责做类似的事情:
$path = $_GET['q'];
// Get router information using the $path variable.
$callback = get_callback_by_path($path);
// Assuming $callback is a function name. The function would print
// the page HTML or call into a theme layer or do whatever it needs to do.
call_user_func($callback);
函数get_callback_by_path
将是自定义逻辑,它可以做任何需要做的事情来弄清楚“userguy”需要做什么。例如查询数据库映射到函数名的路径并返回函数的名称。
当然还有更多内容,但这就是主意。
答案 3 :(得分:0)
使用RewriteMap
指令调用适当转换URL的脚本。