0

私は .htaccess にあまり詳しくありませんが、次のファイルをまとめることができました。悲しいことに、それは機能していません..

- ユーザーがフランス語かどうかを検出する = example.com/fr にリダイレクトする - ユーザーが他の言語かどうかを検出する = example.com/nl にリダイレクトする - .html と .php を含まないすべての URL を表示する

これは言語検出用のコードですが、ループします..

    RewriteEngine on
    RewriteCond %{HTTP:Accept-Language} (fr) [NC]
    RewriteRule .* http://www.example.com/fr [R,L]
    RewriteRule .* http://www.example.com/nl [R,L]

そして、これはクリーンURL用のコードですが、.html専用で、.htmlと.phpの両方が必要です

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^(.+)$ $1.html [L,QSA]

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
    RewriteRule ^(.*)\.html$ /$1 [R=301,L]

では、これらの両方を機能させ、同じファイルにまとめるにはどうすればよいですか? 挨拶します。

4

1 に答える 1

0

/fr/または/nl/ディレクトリにまだ入っていないことを確認する必要があります。

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (fr) [NC]
RewriteRule ^(?!fr/)(.*)$ http://www.example.com/fr/$1 [R,L]
RewriteRule ^(?!nl/)(.*)$ http://www.example.com/nl/$1 [R,L]

次に、html と php の両方のルールを複製するだけです。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule ^(.+)$ $1.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.(php|html)($|\?|\ )
RewriteRule ^(.*)\.(php|html)$ /$1 [R=301,L]
于 2014-01-30T10:23:39.957 に答える