2016-12-18 5 views
0

mod_rewriteがPHP 7.0.0にアップグレードした後、WAMPで正常に動作するのに問題があります。すべてRewriteRuleはApacheによって完全に無視されているようです。その結果、404というエラーが発生します。.htaccessの書き換えルールを無視するWAMP

これはhttpd-vhosts.confで私の仮想ホストである:

<VirtualHost *:80> 
    ServerName myproject.local 
    DocumentRoot "D:/Projects/myproject/www" 
    ErrorLog "D:/Projects/myproject/www/apache_errors.log" 
    LogLevel info 

    <Directory "D:/Projects/myproject/www/"> 
     LogLevel debug 
     Options +Indexes +Includes +FollowSymLinks +MultiViews 
     AllowOverride All 
     Require all granted 
    </Directory> 
</VirtualHost> 

これは、Apacheに認識され、私の.htaccessは、DirectoryIndexのようなディレクティブを処理しますが、任意のRewriteRuleの無視しているようだ:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-zA-Z_\-\s]+)/?$ $1.php [L,QSA] #root pages 
RewriteRule ^([a-zA-Z_\-\s]+)/([a-zA-Z_\-\s]+)/?$ core/modules/$1/$2.php [L,QSA] #pages with no id 
RewriteRule ^([a-zA-Z_\-\s]+)/([a-zA-Z_\-\s]+)/([0-9]+)/?$ core/modules/$1/$2.php?$1_id=$3 [L,QSA] #pages with id (edit, etc) 

Apacheのエラーログには何も表示されません。要求が失敗するだけです。

[Sun Dec 18 15:47:03.787934 2016] [core:info] [pid 12532:tid 1140] [client ::1:57506] AH00128: File does not exist: D:/Projects/StoryTracker-Core/www/test 

私はこれらの結果を引き起こしていることに気づいていないいくつかの外部の力が必要です。

<VirtualHost *:80> 
    ServerName myproject.local 
    DocumentRoot "d:/projects/myproject/www" 
    ErrorLog "d:/projects/myproject/www/apache_errors.log" 
    LogLevel trace8 

    <Directory "d:/projects/myproject/www/"> 
     Options +Indexes +FollowSymLinks +Includes 

     AllowOverride All 
     Require all granted 

     LogLevel trace8    
    </Directory> 
</VirtualHost> 
+1

'MultiViews'を無効にするとどうなりますか?通常、書き換えと競合します。それらのルールに 'L'の代わりに' END'を使うか、 'DPI'を追加するべきです。 'mod_rewrite'のトレースを有効にします。 – Walf

+0

@ Walfアクセスしてみるとこの孤独なメッセージが出る/連絡先/書き換えエンジンは要求を取り上げて書き換えません。 '[Mon Dec 19 22:36:52.661022 2016] [rewrite:trace1] [pid 8204:tid 1116] mod_rewrite.c(477):[クライアント:: 1:55336] :: 1 - - [myproject.local/sid D:/ Projects/myproject/www/contact' –

+0

リクエストされたURIを持つ '' init rewrite engine 'を取得してから、 '' uri '/ contact /' 'にパターン '^([a-zA-Z _ \\ - \\ s] +)/?$'を適用していますが、なぜ「init rewrite engine」がトリガしないのかわかりません。 –

答えて

1

mod_rewriteは私のプロジェクトのディレクトリ名にダッシュを好きではありませんでした:。無駄に次のように私は私の仮想ホストを更新しました

EDIT

プロジェクトパスのディレクトリの名前を-から除外した後、残りの問題はLogLevel debug rewrite:trace8から把握することができました。

+1

'--'をパスに戻してすぐにそれを壊しますか?または、どのステップがそれを引き起こすのか知っていますか?もしそうなら、再現性があるように最小限のコードでバグレポートを提出するべきです。 – Walf

関連する問題