目前我正在开发一个用户互动的网站。我可以使用具有以下命令的.htaccess文件转换配置文件页面链接中的所有用户名:
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?u=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?u=$1
如果我理解正确,这段代码会替换" profile.php"对于信号之后的争论"?"如果URL匹配正则表达式。但我并不了解" u = $ 1"完成那个因为" u"不是变量会话。这是我在PHP中为会话变量配置的:
$_SESSION["id"] = $id;
$_SESSION["username"] = $username;
$_SESSION["password"] = $pswd;
$_SESSION["email"] = $email;
我想在正则表达式中包含太多空格,因为目前只有用户名如" FirstUser"被接受,用户名如" First User"在浏览器中给我一个错误。
当我在模式中添加空格时,我收到以下HTTP 500错误:
答案 0 :(得分:0)
您的.htaccess
配置
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?u=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?u=$1
将尝试加载rewrite engine,这可能是不允许的(先检查此部分!)然后(如果成功)将在.htaccess
文件下进行匹配#39; s结构并使用变量profile.php
将HTTP u
请求转换为.htaccess
,并将其设置为等于该子路径的值。
因此,如果/home/kasbah/public_html
文件位于http://foobar/~kasbah
且与http://foobar/~kasbah/it-works
相对应,那么当用户转到http://foobar/~kasbah/profile.php?u=it-works
时,它们将被重定向到/
然后,您的PHP代码可以调用GET之类的内容来处理该变量。
$_GET['u']
。您还可以将最终RewriteRule
作为可选项,并且只有一个RewriteEngine on
RewriteRule ^((?:[a-zA-Z0-9_-]|%20)+)/?$ profile.php?u=$1
:
BOOT_CLOJURE_VERSION