使用 .htaccess 美化 URL

发布于 2024-10-04 16:25:36 字数 555 浏览 1 评论 0原文

在寻找更加用户友好的 URL 时,我如何仅使用 .htaccess 优雅地实现以下两个目标?

/de/somepage
前往 /somepage?ln=de

/zh-CN/somepage#7
前往 /somepage?ln=zh-CN#7

摘要:
/[语言]/[pagefilenameWithoutExtension][可选锚#][0-9的数字]

应该加载(不更改网址)
/[pagefilenameWithoutExtension]?ln=[语言][可选锚#][0-9的数字]

更新,在提供解决方案后: 1. 异常 /zh-CN/somepage 应可通过 /cn/somepage 访问 2. php 生成的缩略图现在不再加载,例如:
img src="imgcpu?src=someimage.jpg&w=25&h=25&c=f&f=bw"

in search of a more userfriendly URL, how do i achieve both of the following, elegantly using only .htaccess?

/de/somepage
going to /somepage?ln=de

/zh-CN/somepage#7
going to /somepage?ln=zh-CN#7

summary:
/[language]/[pagefilenameWithoutExtension][optional anchor#][a number from 0-9]

should load (without changing url)
/[pagefilenameWithoutExtension]?ln=[language][optional anchor#][a number from 0-9]

UPDATE, after provided solution:
1. exception /zh-CN/somepage should be reachable as /cn/somepage
2. php generated thumbnails now dont load anymore like:
img src="imgcpu?src=someimage.jpg&w=25&h=25&c=f&f=bw"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云胡 2024-10-11 16:25:36
RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L]

您不需要对片段执行任何操作(例如:#7)。它们不会发送到服务器。它们完全由浏览器处理。

更新:
如果您确实想将 zh-CN 视为特殊情况,您可以执行以下操作:

RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L]
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L]
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]
RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L]

You don't need to do anything for fragments (eg: #7). They aren't sent to the server. They're handled entirely by the browser.

Update:
If you really want to treat zh-CN as a special case, you could do something like:

RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L]
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L]
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]
伴我心暖 2024-10-11 16:25:36

我建议如下 -

RewriteEngine on
RewriteRule ^([a-z][a-z])/([a-zA-Z]+) /$2?ln=$1
RewriteRule ^([a-z][a-z])/([a-zA-Z]+#([0-9])+) /$2?ln=$1$3

第一条规则负责处理像 /de/somepage 这样的 URL。语言应该正好有两个字符
长度并且必须仅包含 a 到 z 字符。

第二条规则负责处理 /uk/somepage#7 等 URL。

I would suggest the following -

RewriteEngine on
RewriteRule ^([a-z][a-z])/([a-zA-Z]+) /$2?ln=$1
RewriteRule ^([a-z][a-z])/([a-zA-Z]+#([0-9])+) /$2?ln=$1$3

The first rule takes care of URLs like /de/somepage. The language should be of exactly two characters
length and must contain only a to z characters.

The second rule takes care of URLs like /uk/somepage#7.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文