0

サーバーに次のリクエストをリダイレクトするように指示しようとしています:

http://example.es
http://example.es/
http://example.es/es
http://example.es/es/
http://www.example.es
http://www.example.es/
http://www.example.es/es

このページへ:

http://www.example.es/es/

それを行うために、.htaccessに次のものがあります

#RewriteEngine On    # Turn on the rewriting engine
RewriteBase /
RewriteCond %{HTTP_HOST} ^(\.?example\.es(/|/es|/es/)?|www\.?example\.es(/|/es)?)$ [NC]
RewriteRule ^(.*)$ http://www.example.es/es/ [R=301,L]

問題は、必要な URL http://www.example.com/es/にも HTTP_HOST 文字列が含まれているため、無限のリダイレクトが発生することです。問題は、この問題を回避するための正確な正規表現が見つからないことです。

残りの .htaccess は次のようになります。

php_flag register_long_arrays on
php_flag register_globals on
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css javascript application/javascript
ExpiresActive On
ExpiresByType text/css "access plus 1 years"
ExpiresByType image/png "access plus 1 years"
ExpiresByType application/javascript "access plus 1 years"

Header set Connection keep-alive

ヘルプは非常に高く評価されています!

乾杯!

4

3 に答える 3

1

%{HTTP_HOST}URL のホスト名のみに一致することに注意してください。

コードを次のように置き換えます。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?(example\.ws)$ [NC]
RewriteRule (?!^es/)^(.*)$ http://www.%1/es/$1 [R=301,L,NC]
于 2013-08-07T19:44:42.607 に答える