代码之家  ›  专栏  ›  技术社区  ›  Sam

使用.htaccess美化URL

  •  1
  • Sam  · 技术社区  · 14 年前

    寻找更多 用户友好URL ,如何实现以下两个目标,仅使用.htaccess?

    /数据元素/某页
    /somepage?ln=de

    /中国/某地#7
    /somepage?ln=zh-CN#7

    总结:
    /[语言]/[pagefilenameWithoutExtension][可选锚定#][0-9之间的数字]

    应加载(不更改url)
    /[页面文件名不带扩展]?ln=[语言][可选锚定#][0-9之间的数字]

    提供解决方案后更新: 一。exception/zh CN/somepage应该可以作为/CN/somepage访问 2。php生成的缩略图现在不再加载,例如:
    img src=“imgcpu?src=someimage.jpg&w=25&h=25&c=f&f=bw“

    2 回复  |  直到 9 年前
        1
  •  3
  •   Laurence Gonsalves    14 年前
    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]
    
        2
  •  0
  •   Raj    14 年前

    我建议如下-

    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。