gpt4 book ai didi

php - 用户友好的 URL - mod 重写和 php 重定向

转载 作者:可可西里 更新时间:2023-11-01 13:23:15 25 4
gpt4 key购买 nike

到目前为止,我已经这样做了:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?load=$1 [QSA,L]

然后在我的索引页面(在根目录中)我使用 PHP 来确定加载哪个页面:

// Swap to variables
$load = $_GET['load'];

// Home page
if (!$load || $load == "") { include('home.php'); exit(); }

// Dashboard
if ($load == "dashboard") { include('dashboard.php'); exit(); }

// About
if ($load == "about") { include('about.php'); exit(); }

// Username
$data_array = array(':username' => $load);
$select_account = $connect->prepare("SELECT * FROM `users` WHERE `username` = :username");
$select_account-> execute($data_array);
$account_amount = $select_account->rowCount();
if ($account_amount > 0) { include('profile.php?name=$load'); exit(); }

// Redirect to 404 if there are no results
include('404.php'); exit();

到目前为止一切正常,但用户可以将照片上传到图库,我希望它们可以像这样查看:

www.mysite.com/[username]/gallery/

但是,如果您将其键入为 url,则重写会将 [username]/gallery/ 作为一个部分,这意味着 $load = [username]/gallery会给我一个“404”。

可能有更好的解决方案来获得所需的结果,但我不太擅长 .htaccess 和重写。我想补充一点,我也喜欢这个重写,因为我有名为 signupsignin 的子目录,它们也都有子目录,但如果我去网址:

www.mysite.com/signup
www.mysite.com/signin

它忽略重写并转到目录,而不是通过我想要的 $load 语句运行它。

此外,要注意,在注册帐户时,任何与 dashboardabout 等字符串匹配的用户名都不允许他们使用它,这将停止用户名和 $load if/else 语句及其包含被混淆等

编辑

另一件我忘记注意的事情是,由于他们可以随意调用画廊,因此需要进行搜索以查看该画廊是否存在,例如:

www.mysite.com/username/my+first+album

它首先需要检查用户名是否存在,然后检查相册是否存在,如果存在则显示它,如果不存在则 404/重定向到任何地方。所以基本上,参数/查询都是动态的。不仅如此,该相册中的单张照片也需要具有相同的效果,例如:

www.mysite.com/username/my+first+album/my+picture

我希望这是有道理的...

最佳答案

一个简单的解决方案是:编辑 HTACCESS

RewriteBase /
RewriteCond %{REQUEST_URI} !/signup
RewriteCond %{REQUEST_URI} !/signin
RewriteRule ^([^/]*)/([^/]*)$ index.php?load=gallery&username=$1&gallery=$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?load=$1 [QSA,L]

现在 PHP 部分(用于 index.php ):

$load = $_GET['load'];
switch ($load){
default:
include('home.php');
exit();
break;
case 'dashboard':
include('dashboard.php');
exit();
break;
case 'about':
include('about.php');
exit();
break;
case 'gallery':
$username = $_GET['username'];
$gallery = $_GET['gallery'];

//check for the username and gallery

header("Location: your-gallery-location-goes-here");
break;
}

希望对你有帮助:)

关于php - 用户友好的 URL - mod 重写和 php 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com