Я пытаюсь скрыть расширение PHP на своем веб-сайте, например, если я перейду к http://code-up.nl/contact, http://code-up.nl/contact.php файл будет загружен. У меня на моем сервере несколько доменов. В корне сайта (находится в /var/www/code-up.nl) у меня есть следующий файл.htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)$ $1.php [L]
И в моем файле виртуальных хостов apache я включил AllowOverride для всех:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName code-up.nl
ServerAlias www.code-up.nl
DocumentRoot /var/www/code-up.nl
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/code-up.nl/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Я думаю, что все правильно, но я все еще получаю ошибку 404, когда я перехожу на http://code-up.nl/contact. Я искал решение и много чего пытался, но он просто не сработает. Может кто-нибудь помочь с этим?
Попробуйте это в своем.htaccess в DOCUMENT_ROOT:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]
RewriteRule ^ %{REQUEST_FILENAME}.php [L]