如何使用 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-z
、A-Z
、0-9
、_
(下划线)和 -
范围内的字符(连字符),涵盖了您的示例。
QSA
标志还将附加初始请求中的任何查询字符串。如果您不希望在初始请求中出现查询字符串,那么您应该删除此标志。
澄清一下,您仍然需要将 HTML 来源中的 URL 实际更改为 canonical/friendly URL。 IE。 /blog/How-We-Build-Your-Website
.
请注意,如果您在 .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-z
、A-Z
、0-9
、_
(下划线)和 -
范围内的字符(连字符),涵盖了您的示例。
QSA
标志还将附加初始请求中的任何查询字符串。如果您不希望在初始请求中出现查询字符串,那么您应该删除此标志。
澄清一下,您仍然需要将 HTML 来源中的 URL 实际更改为 canonical/friendly URL。 IE。 /blog/How-We-Build-Your-Website
.
请注意,如果您在 .htaccess
中有其他指令,那么顺序可能很重要。
参考: