3

このサイトがあり、URL を書き換えたい:

mydomain.com/referinte?lang=en

mydomain.com/referinte?lang=ro

.htaccess を使用して次のように URL を変更できる可能性はありますか:

mydomain.com/en/references

mydomain.com/ro/referinte

私の現在の .htaccess は次のとおりです。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
4

1 に答える 1

0

あなたの入力に基づいて、次のようにURL書き換え構成を使用することをお勧めします。

RewriteEngine  on
RewriteRule    ^([a-zA-Z-_]+)$  $1.php?lang=en  [R]
RewriteRule    ^([a-z]+)/([a-zA-Z-_]+)$  $2.php?lang=$1  [R]

最初のルールは、/abc(言語が指定されていない)のようなURLをに書き換え、/abc.php?lang=en英語(en)をデフォルト言語として設定します。2番目のルールは、(言語が/xy/abc指定されている)のようなURLをに書き換えます(言語はリクエストURL/abc.php?lang=xyの最初の部分から取得されます)

例:

  • http://mydomain.com/en/references => http://mydomain.com/references.php?lang=en(RewriteRule#2)
  • http://mydomain.com/ro/referinte => http://mydomain.com/referinte.php?lang=ro(RewriteRule#2)
  • http://mydomain.com/references => http://mydomain.com/references.php?lang=en(RewriteRule#1)
  • http://mydomain.com/referinte => http://mydomain.com/referinte.php?lang=en(RewriteRule#1)

PHPルールは特定のファイルのリクエスト、つまり次のようなリクエストを無視することに注意してください。http://mydomain.com/ro/referinte.phpまたはhttp://mydomain.com/referinte.php、書き換えられません。また、サーバーの応答は、存在しないページでも現在と同じである必要があります。つまり/referinte.php、存在しないと仮定すると、次のような要求が発生します。 http://mydomain.com/en/referinte(新しい書き換え)および http://mydomain.com/referinte?lang=en(現在の書き換え)404が返されると思います。

それがお役に立てば幸いです。

于 2013-02-03T03:32:45.783 に答える