1

よりユーザーフレンドリーな URLを求めて、.htaccess のみをエレガントに使用して、次の両方を実現するにはどうすればよいですか?

/de/somepage
/somepage?ln=de

/zh-CN/somepage#7
に行く/somepage?ln=zh-CN#7

概要:
/[言語]/[拡張子のないページ ファイル名][オプションのアンカー番号][0 ~ 9 の数字]

読み込む必要があります (URL を変更せずに)
/[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"

4

2 に答える 2

3
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]
于 2010-11-29T00:06:00.523 に答える
0

私は次のことを提案します -

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 を処理します。言語は正確に 2 文字の長さで、a から z までの文字のみを含む必要があります。

2 番目のルールは、/uk/somepage#7 などの URL を処理します。

于 2010-11-29T00:05:03.647 に答える