Скрытие расширений .php в URL не работает

0

Я пытаюсь скрыть расширение 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. Я искал решение и много чего пытался, но он просто не сработает. Может кто-нибудь помочь с этим?

  • 0
    mod_rewrite установлен и включен. Я проверил это в выводе моего phpinfo ()
  • 0
    RewriteRule ^ %{REQUEST_FILENAME}.php [L]
Теги:
.htaccess
url
mod-rewrite

1 ответ

0

Попробуйте это в своем.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]
  • 0
    Теперь это работает! Но я не совсем понимаю, что именно вызвало проблему. Не могли бы вы объяснить это? Большое спасибо!
  • 0
    Я не буду объяснять, как работает .htaccess, но в этом случае вам просто нужно внешне перенаправить все * .php на *, и внутренне перенаправить * на * .php для получения хорошей страницы ... а не 404

Ещё вопросы

Сообщество Overcoder
Наверх
Меню