在 .htaccess 中使用 [R=301] 重写规则

Rewrite Rules with [R=301] in .htaccess

提问人:Alfonzo 提问时间:4/28/2020 更新时间:4/28/2020 访问量:48

问:

出于 SEO 原因,我决定将文件夹引入我的 URL。现在我试图 301 所有旧 URL。

这 100+ 个页面的物理位置位于根目录中:

www.mydomain.com/pageA1.php
www.mydomain.com/pageA2.php
www.mydomain.com/pageB1.php
www.mydomain.com/pageB2.php

我现在希望 URL 包含文件夹名称 - 但物理位置保持不变:

www.mydomain.com/a-waste/pageA1.php
www.mydomain.com/a-waste/pageA2.php
www.mydomain.com/b-waste/pageB1.php
www.mydomain.com/b-waste/pageB2.php

我目前的规则是:

RewriteRule a-waste/pageA1.php /pageA1.php
RewriteRule a-waste/pageA2.php /pageA2.php
RewriteRule b-waste/pageB1.php /pageB1.php
RewriteRule b-waste/pageB2.php /pageB2.php

从某种意义上说,如果我浏览 www.mydomain.com/a-waste/pageA1.php - 这个 URL 会留在我的地址栏中,它会显示实际位于 www.mydomain.com/pageA1.php 的页面。

现在,如果我将 [R=301,L] 添加到此规则中以告诉谷歌它是永久的,它不再重写 URL,它只是重定向它?我错过了什么?

谢谢。 亚历克斯。

php apache .htaccess mod-rewrite

评论

0赞 CBroe 4/28/2020
内部重写和外部重定向是两回事。试图使第一个“永久”,一开始就完全没有意义。
0赞 Alfonzo 4/28/2020
CBroe - 我试图实现的目标有意义吗?还是我完全偏离了轨道?所有 URL 都是“内部”的,所以你的评论只会让我更加困惑?
0赞 CBroe 4/28/2020
除了现在的格式之外,您还可以从格式到新格式进行外部重写(这是另一个方向,它会在请求时将格式重写为与现有文件匹配的旧格式。但是,对于您控制的所有链接(即在您自己的站点中),您应该更改这些链接在您的 HTML 代码中直接引用的内容 - 首先不需要这样的外部重定向。
0赞 Alfonzo 4/28/2020
什么是“外部”与“内部”与重写?当我们从外部(即浏览器)改变它的外观时,它是“外部的”吗?那么我是否只是等待谷歌自然地从他们的索引中删除我的旧 URL?我以为我必须告诉谷歌(使用 301),否则我会失去该页面的所有 SEO 排名?
0赞 CBroe 4/28/2020
外部重写是服务器使用标头和 3xx 状态代码进行响应,客户端在此基础上发出全新的请求。内部重写只是将客户端请求的 URL 映射到其他内容 - 在本例中,映射到物理输出脚本文件。是的,如果有人仍然要求将旧 URL 重定向到新 URL,这可能是一个好主意。但是,您应该在正在创建的 HTML 中更改所有自己的链接,这是一个单独的问题。无论如何,你都需要这样做,让整个事情一开始就有意义。Location

答: 暂无答案