.htaccess で SEO フレンドリーなマスク リライトを作成しようとしています。htaccess ファイルは localhost と私の個人用サーバーでは問題なく動作しますが、残念ながら GoDaddy のサーバーでは動作しないようです。それがすでに問題になっていることは承知していますが、ホストとして Godaddy を使用することに決めたクライアントのために働いています。
問題は、書き換えにより、書き換えられたクエリ文字列を内部に保持するのではなく、ブラウザーの URL バーに表示するリダイレクトが強制されているように見えることです。例えば。
ルール:
RewriteRule ^/?([a-zA-Z0-9-_/]*)$ /index.php?loadPage=$1&mode=cms [L,QSA]
リンク:/images
にリダイレクト/images/?loadPage=images&mode=cms
/images/
これは、ブラウザの場合と同様に「すべき」です。以下の短いコードをコピーし.htaccess
ました。IP は開発ブロック用に変更されています
<Files .htaccess>
deny from all
</Files>
Options -MultiViews +FollowSymlinks -Indexes
RewriteEngine On
RewriteBase /
# Stop Old redirection from block below
RewriteCond %{REQUEST_URI} "/old/"
RewriteRule (.*) $1 [L]
# Under construction Redirect
RewriteCond %{REMOTE_ADDR} !^0.0.0.0
RewriteCond %{REQUEST_URI} !^/?old/
RewriteRule ^/?(.*) “/old/$1″ [L,QSA]
#Admin utilities rewrite
RewriteRule ^/?admin/?(.*)$ /index.php?loadPage=$1&mode=backend [L,QSA]
#CMS/Frontend rewrites -- this one is failing
RewriteRule ^\/?([a-zA-Z0-9-_]+)\/?$ /index.php?loadPage=$1&mode=cms [QSA,L]
潜在的な注意のヒントは、表示された URL が/images/?query_string
, NOTindex.php?query_string
であるため、完全なリダイレクトを行っていないことです。ただし、外部リクエストはページ リクエストから 301 レスポンスを受信しています。