Как удалить расширение .php только для страниц в подкаталоге? - PullRequest
3 голосов
/ 25 мая 2019

Я пытаюсь удалить расширение .php только для страниц в папке подкатегории веб-сайта.

currently: example.com/blog/my-first-blog.php

what i want: example.com/blog/my-first-blog/

Я пробовалСледующее правило в .htaccess (помещено в корень), но оно по-прежнему показывает .php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/blog/$1.php -f
RewriteRule ^(.+?)/?$ /blog/$1.php [L]

Ответы [ 3 ]

1 голос
/ 25 мая 2019

Лучший способ достичь желаемого результата - построить маршрут.Прежде всего, вам нужно переписать весь трафик в ваш index.php:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /index.php [L,QSA]

Затем вам нужно написать маршрутизатор, который будет обрабатывать URL-пути.Простейший пример маршрутизатора:

$url = urldecode(preg_replace('/\\?(.*)$/', '', $_SERVER['REQUEST_URI']));

if ($url == '/contact/about') {
    include 'contact.php';
}

Вы можете проверить, как он работает в PHP инфраструктурах, чтобы найти лучшее решение, или использовать один из них.

0 голосов
/ 25 мая 2019

Попробуйте это -

RewriteEngine on
RewriteBase /
RewriteCond %{http://www.example.in/} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.php $ http://www.example.in/$1 [R=301,L]
0 голосов
/ 25 мая 2019

Я понял это Мне просто нужно было создать файл .htaccess в каталоге "/ guide /". со следующим правилом примечание RewriteBase /guide/, чтобы убедиться, что он удаляет только .php в папке "/ blog /"

RewriteEngine On 
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
...