Как удалить расширение .php, перенаправить старые файлы на новые и заставить SSL в .htaccess - PullRequest
0 голосов
/ 10 мая 2018

Я много раз искал это в Stackoverflow и в Интернете, но не смог найти того, кто все это делает, поэтому я задаю этот вопрос.

Для одного из моих новых проектов я решил:удалить .php расширения файлов из URL.

Использование .htaccess

Я хочу

  1. Принудительно SSL
  2. Redirect www URL-адреса non-www

  3. Удалить .php расширение файла из моих URL-адресов

  4. Перенаправить старые .php URL-адреса на новые не URL-адреса
  5. Добавить косую черту после URL /

Это то, что я пробовал, но косая черта и ssl не работают должным образом.Я не знаю, правильно ли я использую порядок.

Для принудительного использования SSL

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

WWW без WWW

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]

Удаление и конечный слеш

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

Перенаправить файлы расширения на не расширение.

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.]+\.php(\?[^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php$ http://www.example.com/yourdirectory/$1 [R=301,L]

Как добиться этого наилучшим образом?Любой вклад будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Для перенаправления .php запросов на чистый URL с удаленным .php:

RewriteEngine On

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

Для принудительного использования SSL:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Это приведет к завершающей косой черте.

<IfModule mod_rewrite.c>
   RewriteCond %{REQUEST_URI} /+[^\.]+$
   RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>
0 голосов
/ 10 мая 2018

Это должно делать то, что вам нужно.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}/index.html !-f
    RewriteCond %{REQUEST_FILENAME}/index.php !-f
    RewriteRule . index.php [L]
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
...