.htaccess mod自动使用php或其他东西重写?
我有多个用户,每个网站的网页就像http://www.mysite.com/folder/artist_id.php?id=33.htaccess mod自动使用php或其他东西重写?
的用户需要能够自行设置网址方便诸如http://www.mysite.com/userguy会重定向到上面的页面。
我知道如何使用RewriteRule在.htaccess中手动编写这些内容,但是,例如,用户使用php和javascript创建了一个完整的控制面板,并且有必要允许他们自己选择名称并自动放置代码英寸但我不知道如果已经有一个简单的方法来设置或通过代码添加到.htaccess文件,或者我应该做某种文件打开,重写或安全。
顺便说一句,我并不担心这些问题,比如他们将自己命名为与我现场的现有文件夹或php文件相同。用户是有限的,需要经过批准,这不应该是一个问题。
不涉及使用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”需要做定制逻辑。例如查询数据库映射路径到函数名称并返回函数的名称。
当然还有更多,但这就是主意。
使用RewriteMap
指令来调用适当转换URL的脚本。
您可以设置一个重写规则,将所有请求(如http://www.mysite.com/userguy)发送到一个PHP脚本,然后执行“翻译”。不一定必须通过重写规则来完成,也可以是ErrorDocument handler。在这种情况下,原始请求路径可以在$ _SERVER ['REQUEST_URI']中找到。
或者,重新设计您的数据库以处理自然键而不是数字键。
这将保存所有的网址解映射33 = userguy等,您的网址将更友好,可猜测和更友好,浏览您的数据库将更容易启动。
username (PK)
重写请求很完美 – Cyprus106 2010-01-20 21:43:49