2017-02-21 12 views
0

Ubuntu 14.04でApache 2を実行しています。 rewrite_moduleが有効になります(sudo apachectl -M)。 /etc/apache2/apache2.conf(httpd.confファイルのUbuntuのバージョン)でApache - httpd.confのmod_rewriteを使用して.phpと.htmlファイル拡張子を削除する

Iは、次のコードブロックを有する:

<Directory /var/www/> 
    <IfModule mod_rewrite.c> 
     RewriteEngine On 

     RewriteCond /%{REQUEST_FILENAME}.php -f 
     RewriteRule ^([a-zA-Z0-9_-\s]+)/$ /$1.php 

     RewriteCond /%{REQUEST_FILENAME}.html -f 
     RewriteRule ^([a-zA-Z0-9_-\s]+)/$ /$1.html 
    </IfModule> 

    <IfModule mod_expires.c> 
     ... 

     <IfModule mod_headers.c> 
      ... 
     </IfModule> 
    </IfModule> 
</Directory> 

sudo service apache2 restart蘭。

私のサーバー上の.phpファイル拡張子なしのURLを訪問すると、404が表示されます。なぜこれは機能しないのですか?

答えて

0

私は結局それを理解しました。私のために働いたのはこれでした:

<Directory /var/www/> 
    <IfModule mod_rewrite.c> 
     RewriteEngine On 

     RewriteCond %{REQUEST_FILENAME}.php -f 
     RewriteRule ^(.*)$ $1.php [L] 

     RewriteCond %{REQUEST_FILENAME}.html -f 
     RewriteRule ^(.*)$ $1.html [L] 
    </IfModule> 

    <IfModule mod_expires.c> 
     ... 

     <IfModule mod_headers.c> 
      ... 
     </IfModule> 
    </IfModule> 
</Directory> 
0

htaccessという文脈では、あなたのルールはうまく動作します。しかし、それらのルールを追加したときserverConfigコンテキストサーバーが404を見つけられませんでした。実際問題は、serverConfigのコンテキストでは、RewriteRuleのパターンの先頭にスラッシュが必要です。したがって、ルールのパターンに先行するスラッシュを追加する必要があります。

RewriteRule ^/([a-zA-Z0-9_-\s]+)/?$ /$1.php 
+0

申し訳ありませんが、それもうまくいきませんでした。 :( – torjinx

関連する問題