开发者

URL Beautification using .htaccess

in search of a more us开发者_JS百科erfriendly 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"


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]


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜