Удаление расширения .php с помощью файла .htaccess

Я хочу, чтобы www.example.com/about.php был просто www.example.com/abou

Я создал файл .htaccess и поместил его в корень моего сервера. Я использую виртуальный хостинг Linux. PHP версия 5.2

<code>RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
</code>

Кажется, этот код должен работать правильно, но по какой-то причине это не так. Я получаю ошибку 404 при попытке перейти на страницу без расширения .php.

Вот и моя разметка:

<code><nav>
        <div class="container">
            <ul>
                <li><a href="index.php" <?php if (strpos($_SERVER['PHP_SELF'], 'index.php')) echo 'class="current-nav"';?>>home</a></li>
                <li><a href="about.php">about</a></li>
                <li><a href="services">our services</a></li>
                <li><a href="portfolio" <?php if (strpos($_SERVER['PHP_SELF'], 'portfolio.php')) echo 'class="current-nav"';?>>portfolio</a></li>
                <li><a href="testimonials" <?php if (strpos($_SERVER['PHP_SELF'], 'testimonials.php')) echo 'class="current-nav"';?>>testimonials</a></li>
                <!--<li><a href="#">client area</a></li>-->
                <li><a href="contact" <?php if (strpos($_SERVER['PHP_SELF'], 'contact.php')) echo 'class="current-nav"';?>>Contact</a></li>
                <li><a href="order" <?php if (strpos($_SERVER['PHP_SELF'], 'order.php')) echo 'class="current-nav"';?>><strong>Free Quote</strong></a></li>
            </ul>
        </div>
    </nav><!--/navigation--> 
</code>

Вы видите, что я пытался использовать расширение php в ссылке, а также пробовал без него. Ссылки с расширением php ведут на страницу, но не удаляют расширение.

Я проверил, был ли включен module_rewrite, добавив мусор и вернув ошибку 500.

 Kvvaradha17 февр. 2016 г., 11:31
если ваш хостинг является общим, то попробуйте эту статью, чтобы сделать это. Kvcodes.com / 2016/02 / GoDaddy-удалить-PHP-расширение
 Braiam20 авг. 2016 г., 16:23
Я обобщил этот вопрос, так как он не относится к godaddy или php.

Ответы на вопрос(5)

RewriteRule ^(.*).php$ /$1 [L,R=301]
 Adam Pflantzer05 мая 2012 г., 18:13
Спасибо за вклад, но не повезло. По-прежнему получаю ошибку 404.

но я обнаружил, что это, похоже, решило проблему GoDaddy .htaccess.

# Fix Rewrite
Options -Multiviews

# Mod Rewrite
Options +FollowSymLinks
RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 
 Kvvaradha17 февр. 2016 г., 06:52
Но я добрый пользователь, мой хостинг безлимитный, и здесь он не работает.
 AdamJones05 июл. 2014 г., 18:12
Fantastic @John SMith, это сработало и для хостинга Site5.

ает с общим хостингом Godaddy. Удаляет расширения файлов php, поэтомуhttp: //yoursite.com/about.ph становитсяhttp: //yoursite.com/abou

Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f    #If requested is not a filename...
RewriteCond %{REQUEST_FILENAME} !-d    #And not a directory
RewriteRule ^(.*)$ $1.php [L]          # perform this redirect

(удалить комментарии перед загрузкой на сервер)

 anubhava14 окт. 2015 г., 08:12
Но это не правильное решение, поскольку оно переписывает любые/not-found файл в/not-found.php даже если этот файл php не существует в системе.
 FoamyMedia15 июл. 2014 г., 19:03
Это ЕДИНСТВЕННЫЙ, который работал на меня! Благодарность

Используйте этот код для сокрытия / удаления.php расширение:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension
# 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
RewriteRule ^ %{REQUEST_URI}.php [L]
 Chris25 нояб. 2012 г., 03:33
Это единственный фрагмент, который сработал для меня. Спасибо
 Michael03 янв. 2016 г., 09:35
Спасибо! Идеально для Godaddy
 E. Marshall14 окт. 2015 г., 07:18
Другие решения позволили визуализировать страницу с расширением или без него. Для GoDaddy это единственное решение, которое удалит расширение .php независимо от ссылки. Благодарность
 Jordan04 февр. 2016 г., 02:17
Это был действительно единственный конфиг, который работал на GoDaddy!
 Ryan29 июл. 2015 г., 22:23
Этот вариант - единственный, который работал для меня с Годадди. Спасибо @ anubhava

что было в моем файле .htaccess, помогло мне ...

## 301 Redirects
RewriteCond %{QUERY_STRING}  ^$
RewriteRule ^(.*)\.asp$ $1? [R=301,NE,NC,L]

Ваш ответ на вопрос