当我创建我的最新网站时,我犯了一个愚蠢的错误,即在URL中包含大写字母和下划线。虽然现在有点晚了(我在网站上有大约90页),但我现在想以最有序的方式纠正这个问题。
示例:mydomain.com/DIR/Page_Name.php应该成为mydomain.com/dir/page-name.php。
在不降低网站速度或引发SEO问题的情况下,最好的方法是什么?
我的第一个想法是将每个页面的mod_rewrite行放入.htaccess,然后重命名该页面。这样做的缺点是.htaccess文件中会有额外的90行。但希望几个月后,搜索引擎会注意到并使用新网址索引所有内容,然后我可以删除.htaccess中的所有内容。
我说的是感觉吗?我有没有想到的任何陷阱?还有更好的方法吗?
答案 0 :(得分:0)
根据应用程序的构造方式,有几种不同的方法。
确保您做的关键是301永久重定向,它会告诉搜索引擎忘记您的旧网址并存储您的新网址: https://en.wikipedia.org/wiki/HTTP_301
大多数搜索引擎也有提交站点地图的方法,您可以使用该方法告诉他们主要更改: https://support.google.com/webmasters/answer/183668?hl=en
如果您正在为您的应用程序使用任何类型的框架,您可以添加一些逻辑来执行此301重定向。但是,这取决于您的框架。
否则,正如您所提到的,您可以使用htaccess编写一些重写规则。您可以编写一些正则表达式检查大写并重写为全部小写。
答案 1 :(得分:0)
mod_speling可能会对您有所帮助;它可以自动纠正大小写,假设URL对应于文件系统。 (对连字符的下划线将被视为拼写错误,因此特定更正仅适用于具有一个下划线的文件。)
您也可以使用RewriteMap
,但由于某种原因,这需要将RewriteMap
指令放在服务器配置文件中,因此可能没有比mod_speling更多的优势。
或者您可以在404页面中添加一些逻辑来检查URL是否包含大写字母,如果是,则重定向,或者将任何带有大写字母的URL重写为使小写字母成为小写的脚本。
答案 2 :(得分:0)
我的解决方案是通过创建一个临时的php文件来重命名页面,并为每个页面运行一次以进行重命名(繁琐但不合理,大约90页)。
然后我在.htaccess文件中添加了一行,对应于每页,
redirect 301 /DIR/Page_Name.php https://example.com/dir/page-name.php
同样,我能够使用临时的php文件来自动创建文本并避免繁琐的输入。
最后,我创建了一个新的站点地图并提交了它。
虽然我很欣赏这可能不是技术上最好的解决方案,但它在我的知识范围内工作,并避免我冒险进入正则表达式,我通常会弄乱一些东西。