寻找更多 用户友好的URL, ,如何优雅地仅使用.htaccess来实现以下两个方面?

/de/somepage
即将 /somepage?ln=de

/ZH-CN/SomePage#7
即将 /somepage?ln=zh-CN#7

概括:
/[语言]/[pageFileNameWithOutExtension] [可选锚#] [0-9的数字

应该加载(不更改URL)
/[pagefileNamewithOutExtension]?ln = [language] [可选锚#] [0-9的数字

更新后,提供的解决方案:1。异常 /ZH-CN /SomePage应作为 /cn /SomePage 2. PHP生成的缩略图现在不再加载:
img src =“ imgcpu?src = someimage.jpg&w = 25&h = 25&c = f&f = bw = bw”

有帮助吗?

解决方案

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]

其他提示

我建议以下 -

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。该语言应完全有两个字符的长度,并且只能包含z字符。

第二条规则会照顾 /英国 /SomePage#7之类的URL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top