php - .htaccess 用于具有多个变量的友好 URL

标签 php .htaccess mod-rewrite url-rewriting

我正在努力使我的网站对 SEO 更加友好 我目前正在使用

RewriteEngine On
RewriteRule (.*)$ index.php?page=$1

site.co.uk/index.php?page=page_name 变成 site.co.uk/page_name

我也想将其用于子页面。 我试过这个:

RewriteEngine On
RewriteRule (.*)/(.*)$ index.php?page=$1&subpage=$2

但它不工作,它运行 site.co.uk/page_name/sub_page 但是当你去 site.co.uk/page_name 它返回 404 不找到了。

我希望它运行 site.co.uk/page_name 并返回 page_name

site.co.uk/page_name/sub_page 并返回 sub_page

等等

site.co.uk/page_name/sub_page/sub_page2/...

最佳答案

仅使用:

RewriteEngine On
Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

没问题,然后您可以在脚本中路由请求。

您使用 explode() 分隔符/拆分页面变量,然后设置变量。

$route = explode('/',$_GET['page']);

$page    = isset($route[0]) ? $route[0] : null;
$subpage = isset($route[1]) ? $route[1] : null;
$yada    = isset($route[2]) ? $route[2] : null;

许多 MVC 框架都使用这种方法。它被称为路由。

关于php - .htaccess 用于具有多个变量的友好 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12451886/

相关文章:

apache - 使用AWS ELB将所有http通信重新路由到https

apache - URL 新闻 ID 的重写规则

php - 计算输出不理想

php - 如何使用 php header 位置删除无效的查询字符串

c# - 在 .NET 中进行 URL 重写的最简单方法

asp.net - 将所有页面重定向到保留页面 - Azure 网站

php - mysql_data_seek pdo 等效项

php - 微软图形 API - AADSTS90094 : The grant requires admin permission

php - 带有 .htaccess 或 PHP 的动态子域页面

Apache .htaccess : Serving . css 文件来自单独的域?