Удаление .php и .html из URL-адреса

Как я могу удалить .php и .html из своих URL-адресов?

Поэтому вместо domain.com/about.php это должно быть domain.com/about.

Я использовал тот же .htaccess код на моем веб-хостинге с OVH, но, купив VPS и сделав это сам, он не работает. Я просто получаю ошибку 404

Запрошенный URL-адрес / об этом не был найден на этом сервере.

Я использую:

RewriteEngine On RewriteRule ^([^\.]+)$ $1.php [NC,L] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L] DirectorySlash On
0
задан 14 November 2017 в 19:54

2 ответа

Способ, которым я это делаю:

RewriteCond %{REQUEST_URI} !(\.[^./]+)$ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule (.*) $1.html [L] RewriteCond %{REQUEST_URI} !(\.[^./]+)$ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.htm -f RewriteRule (.*) $1.htm [L] RewriteCond %{REQUEST_URI} !(\.[^./]+)$ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule (.*) $1.php [L]

Каждая из строф имеет следующую логику:

Если запрошенный файл не имеет расширения, то есть он не соответствует \.[^./]+)$, а запрошенный файл не является каталогом, а запрошенный файл не существует, и существует файл с запрошенным именем и расширением .html (или .htm или .php), затем Подайте этот файл.

[L] означает последний или последний: больше не нужно переписывать, поэтому сервер может спокойно пропустить остальные правила перезаписи.

0
ответ дан 18 July 2018 в 03:17

Способ, которым я это делаю:

RewriteCond %{REQUEST_URI} !(\.[^./]+)$ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule (.*) $1.html [L] RewriteCond %{REQUEST_URI} !(\.[^./]+)$ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.htm -f RewriteRule (.*) $1.htm [L] RewriteCond %{REQUEST_URI} !(\.[^./]+)$ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule (.*) $1.php [L]

Каждая из строф имеет следующую логику:

Если запрошенный файл не имеет расширения, то есть он не соответствует \.[^./]+)$, а запрошенный файл не является каталогом, а запрошенный файл не существует, и существует файл с запрошенным именем и расширением .html (или .htm или .php), затем Подайте этот файл.

[L] означает последний или последний: больше не нужно переписывать, поэтому сервер может спокойно пропустить остальные правила перезаписи.

0
ответ дан 24 July 2018 в 17:48

Другие вопросы по тегам:

Похожие вопросы: