Проблемы с файлом .htaccess - PullRequest
0 голосов
/ 02 января 2019

У меня есть 2 цели, которые я пытаюсь достичь.Во-первых, чтобы убедиться, что пользователь всегда использует https, а во-вторых, чтобы полностью избавиться от расширения .php, так как каждый из моих веб-страниц использует это.

Файл моего веб-сайта .htaccess неверен, и я не совсем уверен, как это исправить.Он перенаправляет с URL-адресов, таких как: www.mysite.com/login.php на www.mysite.com/mysite.com/login

2-й сломанный URL удаляет весь PHP, но объединяет весь мой веб-сайт всам по себе ...

Я пробовал другие средства удаления расширений "php" htaccess, найденные на разных сайтах, но они либо не работают, либо работают только частично (только некоторые из моих веб-страниц удаляют .php).Я думаю, что, должно быть, я включил одну дополнительную вещь, которая не нужна в моем .htaccess, но я очень незнаком с настройкой этого файла, поэтому каждый раз, когда я изменяю его прямо на странице 500 ошибок ...

Header add Strict-Transport-Security "max-age=31415926;includeSubDomains;"

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

# remove the .php extension 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(([^/]+/)*[^.]+)$ $1.php [L]

# redirect from .php to less php
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php /$1 [R=301,L]

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Примерно так:

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


# add the .php extension (so the server can process it)
RewriteCond %{REQUEST_FILENAME} !-d  #is not a directory
RewriteCond %{REQUEST_FILENAME} !-f  #is not a file
#We don't want to add PHP to things like .js or .png or .php files.
#So if it's a real file we can stop here.
#If it's not just add .php
RewriteRule (.+) $1.php [L]

# remove the .php extension and redirect to clean URL
RewriteCond %{REQUEST_URI} \.php$  #ends in .php
RewriteRule (.+)\.php $1 [R=301,L]

Онлайн-тестер - к сожалению, я не вижу способа сохранить тест.Это довольно хороший тестер, но он не может справиться с условием !-f, так что имейте это в виду.Очевидно, что некоторый составленный URL-адрес на самом деле не существует в домене тестеров.

В любом случае, когда вы вводите URL-адрес примерно так:

www.example.com/somepage

Сервер не может запустить это, то, что делает HTACESS,за кулисами добавляется расширение .php и останавливается L.Таким образом, URL-адрес, который видит сервер, это www.example.com/somepage.php При условии, что URL-адрес не существует как реальный файл или каталог (до выполнения правила перезаписи).

Однако, когда URL-адрес подобен этому www.example.com/somepage.php, тогдаHTACCESS удаляет .php и делает 301 R=301 и останавливается L.После перенаправления первое правило добавит .php обратно в URL, но «Только» на сервере, поэтому в браузере URL не будет содержать расширение PHP.

Надеюсь, что имеет смысл.

0 голосов
/ 02 января 2019

Чтобы удалить .php из URL:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...