如何使用 htaccess 更改我的站点 URL?

How can I change my site URL with htaccess?

这是我的 url:

http://localhost/blog/post/?meta=How-We-Build-Your-Website

我需要它是这样的:

http://localhost/blog/How-We-Build-Your-Website

如何使用 .htaccess 完成?

我很确定唯一的方法是在 PHP 中重定向它。

您可以通过编辑 post.php 文件并将其放在文件的 top 处来完成此操作:

<?php if (isset($_GET['meta'])) { header("Location: ../".$_GET['meta']); exit; } ?>

这将重定向到该页面而不加载任何其他页面数据。但是,如果没有“?meta=...”,它不会重定向,而是加载页面的其余部分。

要在内部将友好 URL /blog/How-We-Build-Your-Website 的请求重写为 /blog/post/index.php?meta=How-We-Build-Your-Website(实际处理请求的基础文件),您可以在 [=13] 中执行类似以下操作=] 使用 mod_rewrite:

RewriteEngine On

RewriteRule ^blog/([^w-]+)$ blog/post/index.php?meta= [QSA,L]

子模式 ([^w-]+) 捕获 /blog/ 之后的 URL 路径部分,并将其存储在 </code> 反向引用中,稍后用作 <code>meta URL substitution 字符串中的参数值(第二个参数)。正则表达式字符 class [^w-] 匹配 a-zA-Z0-9_(下划线)和 - 范围内的字符(连字符),涵盖了您的示例。

QSA 标志还将附加初始请求中的任何查询字符串。如果您不希望在初始请求中出现查询字符串,那么您应该删除此标志。

澄清一下,您仍然需要将 HTML 来源中的 URL 实际更改为 canonical/friendly URL。 IE。 /blog/How-We-Build-Your-Website.

请注意,如果您在 .htaccess 中有其他指令,那么顺序可能很重要。

参考: