![Apache Web 服务器 - 如何删除语言扩展](https://linux22.com/image/913279/Apache%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%20-%20%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E8%AF%AD%E8%A8%80%E6%89%A9%E5%B1%95.png)
这个问题与在 help.ubuntu.com 上发布 Ubuntu Serverguide 有关。对于 20.04 LTS 周期,Ubuntu Serverguide 的源代码工作流程将(或者可能)发生重大变化。目前,不考虑对此迁移进行翻译。我们最好的反馈是服务器管理员类型更喜欢英语,即使英语不是他们的第一语言。在决定不可逆转之前,我们希望通过仅以美国英语发布 18.04 Ubuntu Serverguide 的下一个版本来测试它。一切都准备就绪,除了一个问题:
我们确信语言扩展中存在许多链接、书签等。例如:
https://help.ubuntu.com/lts/serverguide/networking.html.en-CA
而我们希望该场景返回此页面:
https://help.ubuntu.com/lts/serverguide/networking.html
因为特定语言的版本将不再存在,但返回 404 Not Found 错误是不可取的。
.htaccess 文件的当前版本(注释掉之前的尝试)是:
# unable to make below method work.
#RedirectMatch permanent ^(*\.html)\.*$ $1
#
# enable rewriting
RewriteEngine on
#RewriteRule ^(*\.html)\.*$ $1 [R=301, L]
#RewriteRule ^(*\.html)\.*$ $1
RewriteRule ^(*\.html)\.*$ $1 [PT]
#RewriteRule ^(*.html).*$ $1
导致:
500 Internal Server Error
到客户端,并且在测试服务器日志中:
[Thu Jun 20 11:57:07.647838 2019] [core:alert] [pid 16079] [client 192.168.111.101:62992] /home/doug/public_html/linux/ubuntu-docs/help.ubuntu.com/dev/lts/serverguide/.htaccess: RewriteRule: cannot compile regular expression '^(*\\.html)\\.*$', referer: http://my-test-website/~doug/linux/ubuntu-docs/help.ubuntu.com/dev/index.html
[Thu Jun 20 14:19:27.360334 2019] [core:alert] [pid 16079] [client 192.168.111.101:63908] /home/doug/public_html/linux/ubuntu-docs/help.ubuntu.com/dev/lts/serverguide/.htaccess: RewriteRule: cannot compile regular expression '^(*\\.html)\\.*$', referer: http://my-test-website/~doug/linux/ubuntu-docs/help.ubuntu.com/dev/index.html
请注意,当前尝试使用语言扩展的通配符。如果这不可能,则语言列表为:
ace ar ast be bg bn bs ca cs da de el en en_AU en_CA en_GB eo es et eu fa fi fr gl gu he hr hu id is it ja km ko ku lo lt lv mk ms nb nl oc pl ps pt_BR pt ro ru sk sl sq sr sv th tl tr ug uk ur vi zh_CN zh_TW
有人可以帮忙吗?
答案1
RewriteRule ^(.*.html)\..*$ $1
这将重写/foobar.html.anything
为/foobar.html
,并且似乎可以执行您想要的操作。
如果想要永久保留,您可能应该发送 301:
RewriteRule ^(.*.html)\..*$ $1 [R=301]