0

Windows 開発マシンにこの .htaccess があり、すべて正常に動作します

RewriteEngine On
RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/webserv/$1 [R=301,L]
RewriteRule   ^login/([0-9]+)/([0-9]+)$   login.php?par1=$1&par2=$2 [L,NC,QSA]

Centos サーバーにアップロードすると、エラーが発生します

404 The requested URL path_to_script/login.php was not found on this server.

これがなぜなのか理解できません。ファイルは間違いなくそこにあり、許可を 777 にしました。

.htaccess にごみを追加し、動作していることを示す内部エラー (500) を取得して、.htaccess が実際に使用されているかどうかを確認しました。

また、.htaccess を使用してディレクトリにアクセスできる IP を制限すると、機能します。mod_rewrite は、私が試した phpinfo() に示されているようにロードされます。

私はここで途方に暮れています。

編集

base_path をルートパスに追加して検索しようとすることに気付きました。

/path_to_script/path_to_script/login.php

そしてそれが失敗する理由です。これを解決するにはどうすればよいですか?

4

1 に答える 1

0

私は最終的にそれを解決しましたが、私が好きかどうかわからない方法で。少なくともそれは機能します。誰かがより良い解決策を持っているなら、私はそれを見てうれしいです.

RewriteRule   ^login/([0-9]+)/([0-9]+)$   http://host/webserv/login.php?par1=$1&par2=$2

このソリューションが気に入らない理由は、きれいな URL を提供していないためです。リダイレクトするだけです。

代わりに次のように書くと、リクエストにルートディレクトリが追加される理由はまだわかりません。

RewriteRule   ^login/([0-9]+)/([0-9]+)$   login.php?par1=$1&par2=$2
于 2013-06-17T12:05:44.457 に答える