ファイルにRewriteRuleをたくさん書いていますが、 httpsからhttpページ.htaccess
に切り替えると問題が発生します。それはこれらの規則に従わない
注: localhostですべて正常に動作し、問題はサーバーにあります<---- UPDATE
これが私のウェブサイトです。現在、すべてのリンクはRewriteRule*に従って表示されます。
たとえば、私たちについてのページのリンク表示として
http://www.mywebsite.com/about
しかし
私がlogin page
(オンになっている)にいて、私たちについてhttps
のページをクリックすると、下に変わります。
http://www.mywebsite.com/about?slug=about_us
または、左パネルのカテゴリをクリックすると、次のようになります
http://www.mywebsite.com/auction/category/1?cid=1
注: ページ上にマウスを置いても、書き換えリンクが表示されます
以下は.htaccess
、必要な情報を含むファイルです。
IndexIgnore *
RewriteEngine on
Options +FollowSymLinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^auction/category/([0-9]+)/?$ bids.php?cid=$1 [NC]
RewriteRule ^login/?$ login.php [NC]
RewriteRule ^register/?$ register.php [NC]
RewriteRule ^logout/?$ logout.php [NC]
# static pages
RewriteRule ^about/?$ page.php?slug=about_us [NC]
# Rewrite to https
RewriteCond %{SERVER_PORT} !^443$ [OR]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /login [OR]
RewriteCond %{REQUEST_URI} /do_login.php
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,NC,L,QSA]
# don't do anything for images/css/js (leave protocol as is)
RewriteRule \.(gif|jpe?g|png|ico|css|js)$ - [NC,L]
# traffic to http:// except some pages
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(/login|/do_login.php)
RewriteRule ^(.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,NC,L,QSA]
注: Here
完全な.htaccess
ファイルです
どこが間違っているか教えてください。
私ももう少し混乱しています
- URL の書き換え ( Login または login または login ) の大文字と小文字を変更すると、エラーが発生しますか?
- すべてを[NC,L]と書くのは良い習慣
RewriteRule
ですか? - いつ[QSA]と書くべき ですか?
アップデート
すべての回答からの提案の後、すべての問題をRewriteRule
ほぼ修正しましたが、最後の問題が 1 つあります。
/login
URL は常に に変わります/login.php
。
以下は私の更新された.htaccessです
IndexIgnore *
Options -MultiViews
Options +FollowSymLinks
#mod_rewrite
RewriteEngine on
RewriteBase /
# Rewrite www to non www
RewriteCond %{HTTP_HOST} ^www.%{HTTP_HOST} [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
# minimize the css on all http:// pages
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} off
RewriteRule ^(.*).css$ /csszip.php?file=$1.css [L]
</IfModule>
#switch over http to https
# Rewrite to https
RewriteCond %{SERVER_PORT} !^443$ [OR]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (/login|/do_login)\.php [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# don't do anything for images/css/js (leave protocol as is)
RewriteRule \.(gif|jpe?g|png|ico|css|js)$ - [NC,L]
# traffic to http:// except some pages
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(/login|/do_login)\.php [NC]
RewriteRule ^(.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^login/?$ login.php [NC]
RewriteRule ^register/?$ register.php [NC]
# ...many other rules...with [NC] falg
RewriteRule ^auction/category/([^/.]+)/?$ bids.php?cid=$1 [NC]
RewriteRule ^about/?$ page.php?slug=about_us [NC]
# ...many more rules.... with [NC] flag