web-dev-qa-db-ja.com

.htaccessはUbuntu 16.04.2 LTSで動作していません

PHP Webページの書き換えに.htaccessを使用したい。または、「。php拡張子を使用したくない」という簡単な方法でWebページにアクセスします。

完全に機能していた.htaccessファイル(Ubuntu 14):

RewriteEngine on
#remove the need for .php extention
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

現在、Ubuntu 16.04にあるAWSのアップグレード後に、同じ.htaccessファイルが機能しません。アクセス許可の変更、書き換えモードの有効化、構成ファイルのディレクトリプロパティを「AllowOverride None」から「AllowOverride All」に変更するなど、すべてを試しました。

ある種の実験の後、上記の.htaccessファイルを以下のように修正することがわかりました。ただし、ここでは常に特定のphpページのみにアクセスできます。しかし、特定のphpページに具体的になりたくありません。私も正規表現を書いてみましたが、うまくいきませんでした。そして、常に特定のページにのみリダイレクトします。

<IfModule mod_rewrite.c><
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php [L]
</IfModule>

誰かがこれで私を助けることができます。前もって感謝します。

2
MSVKC

私はトリックを行う必要があるこの例を見つけました:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

ソース:

https://stackoverflow.com/questions/4026021/remove-php-extension-with-htaccess

https://stackoverflow.com/questions/1992183/how-to-hide-the-html-extension-with-Apache-mod-rewrite

2
George Udosen

私は同じ問題に直面していました、ここにbuntuとApacheの解決策があります

最初にモジュールの書き換えを有効にします。

Sudo a2enmod rewrite 

Apacheを再起動します

Sudo systemctl restart Apache2

今ディレクトリレベルの編集

Sudo vim /etc/Apache2/sites-enabled/000-default.conf

これらの行を最後に追加します

<Directory /var/www/html>
    AllowOverride All
 </Directory>

apacheを再起動します。

Sudo service Apache2 restart
1
BSB