php - 如何使用 .htaccess 将某些类型的 URL 更改为另一种类型?
问题描述
我有一个网站,每个用户都有自己的个人资料页面。我使用的是 php,所以我使用 GET 方法来制作 URL,例如:
example.com/users/dashboard?user=59
但我希望这个 URL 看起来像:
example.com/users/dashboard/59
我在这里看到了很多问题,我决定在我的 .htaccess 文件中使用下面的代码:
ErrorDocument 404 /404.php
AddDefaultCharset UTF-8
Header unset ETag
FileETag None
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+dashboard\.php\?user=([^\s&]+) [NC]
RewriteRule ^dashboard/%1? [R=301,L]
RewriteRule ^dashboard/([^/]+)/?$ dashboard.php?user=$1 [L,QSA]
我知道这是错误的,但不知道如何解决它,所以我感谢任何帮助
解决方案
感谢您的所有回答,但我找到了另一个解决方案:我将 .htaccess 代码更改为:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /4reza/users/index.php [L]
因此,我将每次访问用户文件夹的尝试重定向到 index.php 页面,并使用此代码管理任何具有“4reza/users/ANY_NUMBER”格式的 url:
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')
$link = "https";
else
$link = "http";
$link .= "://";
$link .= $_SERVER['HTTP_HOST'];
$link .= $_SERVER['REQUEST_URI'];
$urlStr = str_replace("http://localhost/4reza/", "", $link);
$chunks = array_filter(explode('/', $urlStr));
if (count($chunks) == 2 and $chunks[0] == "users" and isset($chunks[1])) {
if (is_numeric($chunks[1])) {
...
}
}
4reza 是我的网站本地文件夹
推荐阅读
- ios - 添加 Admob 中介 Facebook 后应用程序崩溃
- html - 如何放置框的按钮中心
- html - ngbtypehead 在对象数组中搜索多个键值
- shell - 批处理文件在我直接执行时调用另一个批处理,但不是在计划时
- solid-state-drive - 安全擦除以 MAX 安全级别锁定的 SSD
- sql - PSQL 优化左连接
- python - 我正在尝试用 kivy 和 buildozer 制作一个 apk,但我发现一个错误
- c - GTK g_action 未从 gtkRadioMenuItem 触发
- c++ - clang-tooling:如何检查一个字段是否是一个不完整的构造类型?
- filter - Quicksight - 使用 Top N 过滤器时如何显示所有值?