2017-02-15 9 views
1

コミュニティ、Apache mod_rewriteの不一致

私は以下の問題があります:プライベートプロジェクトでは、mod_rewriteで素敵なURLを作成したかったのです。

ローカル(Win 10、Apache 2.4.23).htaccessのすべてのルールが正常に動作します。 遠隔から(Ubuntu 16.04、Apache 2.4.18)、最初の3つのルールはまったく動作しません。特に、すべてが404エラーが見つかりません。

見てみてください。

# Basic site rules 
RewriteRule ^login$ /login.php 
RewriteRule ^logout$ /login.php?logout 
RewriteRule ^signup$ /signup.php 
RewriteRule ^confirm/(.*)$ /signup.php?confirm&regkey=$1 

# mail list 
RewriteRule ^mails$ /manage_mail.php 
RewriteRule ^mail/list/ip$ /manage_mail.php?mode=create_iplist 
RewriteRule ^mail/list/usernames$ /manage_mail.php?mode=create_usernamelist 

and more rules here... 

規則1-3(ログイン、ログアウト、サインアップ)は、前述の404エラーを返します。 以下の規則はすべて意図したとおりに動作します。

アイデア? ありがとうございます。

編集#1:

編集#2を傷:これは私が使用しているバーチャルホストである:

<VirtualHost *:80> 
    ServerName domain.me 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/domain.me/html 
    <Directory /var/www/domain.me/html> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride All 
      Require all granted 
    </Directory> 
    ErrorLog "|/usr/bin/cronolog /var/www/domain.me/log/%Y-%m/error_%Y-%m-%d.log" 
    CustomLog "|/usr/bin/cronolog /var/www/domain.me/log/%Y-%m/access_%Y-%m-%d.log" combined 
</VirtualHost> 

マイ/etc/apache2/apache2.confはかなり似ています。

+0

localhostのApacheの設定ファイルで、そのディレクトリに 'AllowOverride All'オプションが設定されていますか? – artur99

+0

長い名前( '/ login.php'など)でページにアクセスできますか? – neuhaus

+0

ブラウザが以前のリクエストからそれらのURLに404をキャッシュしていないことを確かめてください。 これをチェックする最良の方法は、 'curl' cliユーティリティを使用することです: ' curl -I http:// www.example.com/login' – Euperia

答えて

1

ご協力ありがとうございました。自分で解決策を見つけました。問題は、私はそれを削除し、設定を再ロードすると、すべてがうまく働い

<Directory /var/www/domain.me/html> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Require all granted 
</Directory> 

でMultiViewsオプションでした。

0

これは、AllowOverrideオプションがApacheの設定でAllに設定されていない場合に発生する問題です。

あなたの設定をどこで設定したか分かりませんが、/etc/apache2/apache2.confまたは/etc/apache2/httpd.confに設定されているとします。

このファイルでは、public_html [1]フォルダの場所を設定する<Directory "LOCATION">タグに移動し、AllowOverride Allパラメータを追加する必要があります。

また、そのディレクトリが見つからない場合は、末尾にpublic_htmlフォルダの新しい<Directory>タグを追加してください。

それは次のようになります。

<Directory "folder_location"> 
    Require all granted 
    AllowOverride All 
</Directory> 

[1]私はそれはあなたがあなたのPHPファイルを持っているフォルダの名前だと仮定しています。

+0

私は自分の質問を広げた。 – Kapparina