我创建了一个非常基本的php模板系统,用于显示带有此URL的页面:/basedir/index.php?page = home
home 内容由脚本home.php提供。
在.htaccess中使用重写规则,我希望我的网址看起来像这样:/ basedir / home。
我遇到的问题是,在重写一个我用于显示用户个人资料的GET变量时,我遇到了困难。目前,个人资料页面网址如下所示:/ basedir / profile?user = username。
现在我希望它看起来像这样:/ basedir / profile / username。
到目前为止,我的.htaccess看起来像这样:
RewriteEngine On
RewriteBase /basedir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) ?page=$1 [L,QSA]
我不知道这是好还是我必须写一个全新的.htaccess文件。
答案 0 :(得分:0)
根据你的代码和我有限的理解,我猜这样的事情:
RewriteRule ^profile/([^?]*) ?page=profile&user=$1 [L,QSA]
..将其插入RewriteRule ^([^?]*) ?page=$1 [L,QSA]
。
答案 1 :(得分:0)
正如您在http://htaccess.mwl.be/所见,您的网址http://www.example.com/profile/username
已转换为http://www.example.com/basedir/?page=profile/username
现在您需要做的是将index.php
放入basedir
爆炸page
并检索用户名。
$page = $_GET['page'];
$parts = explode('/', $page);
switch($parts[0]){
case 'profile':
if(isset($parts[1])){
$username = $parts[1];
return doWhatEverYouWantToDoWithUsername($username);
}
return handleJustProfilePage();
default:
return yourDefaultHandler();
}
这种方法称为routing
,您可以通过一些外部路由库来改进。