2

先週のある日、私の e コマース Web サイトのすべてのフォームが機能しなくなりました (これは、最も重要なことに、チェックアウトが機能しないことを意味していました)。私のサイトは XHTML と PHP で書かれています。私はサイトのコードに変更を加えていなかったので、私のウェブホストが私のホスティング設定にいくつかの変更を加えたと仮定しました. とにかく彼らはかなり絶望的で、何も変更していないと言い、私のサイトのコードに問題があると示唆しました.

現在、htaccess ファイルで次のコードを使用して、Web ページ アドレスの php 拡張子を削除しています (インターネットからコピーして貼り付けたばかりのこのコードをよく理解していないのではないかと思いますが、動作しているようです)。

# Remove the need for php extension to web page addresses
RewriteCond %{REQUEST_URI} ^(.*[^/])/?$
RewriteCond %{DOCUMENT_ROOT}%1.php -f
RewriteRule .+ %1.php [QSA,L]

エラーに対処した後、明らかな理由もなく、すべての URL に末尾のスラッシュが追加されていることに気付きました。これは、POST 経由で送信されたフォーム データが次のページに渡されなかったことを意味します。これは、フォームが末尾のスラッシュのない Web ページを指していたためです。フォームが指すアドレスの末尾にスラッシュを追加するだけで、サイトを一時的に修正しました。

ただし、このソリューションには満足していません。Web ページを元の状態に戻したいからです。末尾のスラッシュは必要ありません。特に、末尾にスラッシュがあるページとないページはまったく別のページと見なされることを知っているため、SEO 作業への影響が懸念されます。最も奇妙なことは、新しいページを作成すると、古いページと同じであっても末尾にスラッシュがないことです。

この変更が突然発生した理由と、この問題を解決する方法を知っている人がいるのだろうか. 私の Web ホスティングは現在、PHP バージョン 5.2.17 を実行しています。

4

1 に答える 1

0

Apache の mod_dir モジュールが機能していないようです。URL に末尾のスラッシュを追加することは、そのモジュールの重要な機能です: http://httpd.apache.org/docs/2.0/mod/mod_dir.html

DirectorySlash Off.htaccess ファイルを 入れて、それが機能するかどうかを確認できます。RewriteOptions AllowNoSlashまた、あなたをどこかに連れて行くかもしれません。

または、ディレクティブは書き換えに関する詳細情報を提供します。そこで何かが起こっている可能性がありますRewriteLog "rewrite.log"RewriteLogLevel 3

于 2012-04-05T08:52:09.533 に答える