0

次のhtaccessファイルを使用して、リダイレクトなどを実現しています:

RewriteEngine On

Options +FollowSymLinks 
RewriteEngine on

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.myurl.com/$1 [R,L]

RewriteRule ^$ /home [R=301,L]

最近、最新の行を追加したので、ユーザーがhttps://www.myurl.comにアクセスすると、ホームページのhttps://www.myurl.com/homeにリダイレクトされます。これは思い通りにうまくいきますが、これはどうにかしてもっとうまく書かれるべきだと感じています。^$ の部分は好きではありませんが、機能します。これをどのように書き直すことができますか?

4

1 に答える 1

1

このHTTPS部分は間違いなく書き換え可能であり、複数のリダイレクトを作成しているため、最初に来る必要があります。

RewriteEngine On

Options +FollowSymlinks 
RewriteBase /

#redirect all traffic looking for a domain not starting with www &
#all non-https traffic to the https://www domain
RewriteCond %{HTTPS} off
#This condition is better for analytics tracking and SEO (single subdns)
RewriteCond %{HTTP_HOST} !^www\. [OR]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^index\.php$ - [L]

RewriteRule ^$ home [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

MVC は index.php を使用してすべてのリクエストを処理する可能性が高いため、/homeファイルをリクエストせずに Web サイトにアクセスしていない限り (ルートのみ)、リダイレクトが機能しない可能性があります。誰かがサイトに何も変更しないように指示https://www.myurl.com/index.phpするルールを明示的に要求した場合。RewriteRule ^index\.php$ - [L]これが期待どおりに機能していると言ったので、順序を変更していません。

意図したとおりに機能しない場合は、ルールの順序を入れ替え/homeます。

RewriteRule ^$ home [R=301,L]
RewriteRule ^index\.php$ - [L]
于 2013-05-27T20:05:06.660 に答える