1

私はこのようなことをしようとしていますhttp://myweb.com//page

最初のパラメーターが存在しない場合、2 番目のパラメーターのみが処理されます。最初は言語であり、セッションに保存されますが、変更することができます ?lang=en..

私はこのようなことを試みていましたが、うまくいきません

RewriteRule ^([a-zA-Z_]+)?/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2
4

2 に答える 2

2

先頭のスラッシュが削除されるため、それらを 2 つの別個のルールにしてみてください。

RewriteRule ^([a-zA-Z_]+)/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2 [L,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 [L,QSA]
于 2012-07-02T17:56:26.377 に答える
1

私が行った以前の言語切り替え可能なサイトでは、URL に常に言語を含めることを選択しました。全体的に実装が簡単で、ユーザーにとって見栄えがよくなりました。

RewriteRule ^$ /en/ [L]   #default language
RewriteRule ^([^/]+)/(.+)$ index.php?lang=$1&page=$2 [QSA,NE]   # first "slug" is presumed always language the rest is a page identifier

ここで、/en/ に誘導する代わりに、言語を設定せずにユーザーを geoip スクリプトまたは言語コードのユーザー エージェント文字列を切り刻むスクリプトに誘導して、推測をより正確にすることができます。

于 2012-07-02T17:59:42.767 に答える