我试图在我的网站上隐藏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设置为All:
<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>
我认为一切都是正确的但是当我去http://code-up.nl/contact时我仍然会收到错误404。我已经找到了解决方案并尝试了许多方法,但它只是赢了工作。任何人都可以帮忙吗?
答案 0 :(得分:1)
在DOCUMENT_ROOT下的.htaccess中试试这个:
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]