apache 从Camel Case更改为小写URL

mxg2im7a  于 2023-10-23  发布在  Apache
关注(0)|答案(4)|浏览(114)

当我创建我的最新网站时,我犯了一个愚蠢的错误,在URL中包含大写字母和下划线。虽然有点晚了(我有大约90页的网站),我想纠正这一点,现在在最有序的方式可能。
示例:mydomain.com/DIR/Page_Name.php应变为mydomain.com/dir/page-name.php。
什么是最好的方法来做到这一点,而不会减慢网站或招致SEO问题?
我的第一个想法是为每个页面在.htaccess中放置一个mod_rewrite行,然后重命名该页面。这样做的缺点是.htaccess文件中会有额外的90行。但希望几个月后,搜索引擎会注意到并用新的URL索引所有内容,然后我可以删除. htaccess中的所有内容。
我说的有道理吗?有什么陷阱我没想到吗?有更好的办法吗?

s5a0g9ez

s5a0g9ez1#

根据应用程序的构造方式,有几种不同的方法。
确保你这样做的关键是一个301永久重定向,它会告诉搜索引擎忘记你的旧页面URL并存储你的新URL:https://en.wikipedia.org/wiki/HTTP_301
大多数搜索引擎也有一个方法来提交一个网站Map,你可以用它来告诉他们的主要变化:https://support.google.com/webmasters/answer/183668?hl=en
如果你正在为你的应用程序使用任何类型的框架,你可以添加一些逻辑来执行这个301重定向。这取决于你的框架。
否则,正如你提到的,你可以用htaccess写一些重写规则。你可以写一些正则表达式来检查所有的bits,然后重写所有的bits。

r7knjye2

r7knjye22#

mod_speling在这里可能会有帮助;它可以自动纠正大小写,假设URL对应于文件系统。(连字符的下划线将被视为拼写错误,因此特定的更正仅适用于带有一个下划线的文件。
您也可以使用RewriteMap,但由于某些原因,这需要将RewriteMap指令放置在服务器配置文件中,因此与mod_speling相比可能没有太大优势。
或者你可以在你的404页面中添加一些逻辑来检查URL是否有“不”字母,如果有,就重定向,或者将任何带有“不”字母的URL重写为一个脚本,使其成为“不”。

f2uvfpb9

f2uvfpb93#

我的解决方案是通过创建一个临时的php文件来重命名页面,并为每个页面运行一次来重命名(大约90页,繁琐但并非不合理)。
然后,我在.htaccess文件中添加了一行对应于每个页面的内容,沿着

redirect 301 /DIR/Page_Name.php https://example.com/dir/page-name.php

同样,我能够使用一个临时的php文件来自动创建文本,避免繁琐的输入。
最后,我创建了一个新的网站Map并提交了它。
虽然我知道这在技术上可能不是最好的解决方案,但它在我的知识范围内工作,避免了我冒险进入像regex这样的领域,我通常会把事情弄得一团糟。

j2datikz

j2datikz4#

应该能用

# RewriteMap to lowercase
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lowercase:$1} [R=301,L]

相关问题