上のすべての作業は、私が数年前に作られた私のウェブサイトを更新してきました。私は最近ウズント16.04にウインドウズテスト環境(この目的のために問題なく完全にうまく動作しました)から16.04に移動しました。長年ここで経験しています。これは本当に奇妙な問題です。私はそれを修正する方法を失っています。のみいくつかのルールは、ライブ
私はちょうどあなたが何を動作し、どのようなないを示す目的のために私のhtaccessファイルを短縮しました。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^admin/([^/]*)/? /admin.php?p=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/?(img)
RewriteRule ^([^\.]+)$ /media.php?i=$1 [NC,L,QSA]
So.私のウィンドウのテストenvとライブサーバーでは、トップルールは完全に正常に動作しますが、私の新しい開発環境では、下のルールだけが適用されるようです。私は短いローカルホスト/管理/を要求しようとした場合、私は、「管理者」で起動しないのimgディレクトリを要求されず、存在するファイルではありません任意のURLを要求した場合、それは、私の書き換えを404を与えますそれをmedia.phpに送るでしょう。
何が起こるべきではlocalhostの/管理/ショート==>はlocalhost/admin.php?P =短い
とお取置き手がかりです。大文字と小文字の区別が考えられるかもしれませんが、すべてのPHPファイルが小文字であるとは限りません。誰にでもアイデアはありますか?私が提供できる情報は?
だから私はここに途方に暮れてよ。動作しない他のものの中には
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
私の意図:localhost /をアップロード==>はlocalhost/upload.php
それはファイルのアクセス許可の問題をだろうか?
それは
/etc/apache2/sites-enabled/000-default
がAllowOverride All
を持っていたことが判明、しかし/etc/apache2/apache2.conf
も 当社のウェブのために同じエントリを持っていた:私が言った1つの答えを見つけ-rw-rw-r-- 1 www-data www-data 10113 Nov 13 15:23 admin.php -rw-rw-r-- 1 www-data www-data 2796 Nov 13 14:07 index.php -rw-rw-r-- 1 www-data www-data 3664 Nov 13 11:49 media.php -rw-r--r-- 1 root www-data 261 Dec 20 23:57 .htaccess
:これは次のようにそれが見えるものです
Directory
とAllowOverwrite None
。だから 両方の場所を必ず確認してください!
私はそれを変更しましたが、まだ動作していません。
奇妙なことに、それは私がように私のapache2.confで を私の書き換え情報を置けばあなたのルールはより良いかもしれないので、
<Directory /var/www/html>
RewriteEngine on
... etc ...
</Directory>
念のために:すべてがWebルートで実行されていて、サブディレクトリでは実行されていませんか?あなたの与えられたルールは私にとってうまくいっているようです。あなたのサイトを書き換えている場合は、PHPベースのルータを使用することは良いアイデアかもしれないと言われている。 – Gerrit0
'web root'によって/ var/www/htmlを意味する場合はyesです。メインページは/var/www/html/index.php – Alice
これが自発的に動作する前に私が最後に変更したのは、apache2.confに/ var/www/htmlの許可を明示することです/ www)。私は再開した、それは働いた。だから私はそれを削除しようとしたが、それはまだあなたがその作業を持って喜んで、 – Alice