Правило перезаписи URL с помощью файла .htaccess - PullRequest
1 голос
/ 07 февраля 2020

Я здесь, чтобы спросить совета о файле .htaccess, который я не могу настроить так, как мне хотелось бы.

У меня есть сайт, скажем: www.mysite.com/php/blog.php

Я бы хотел, чтобы посетитель видел только в адресной строке: www.mysite.com/blog

Вот что содержит файл .htaccess:

Options +FollowSymlinks
Options All -Indexes
RewriteEngine On
RewriteRule ^$ index.php     #This line is to hide index.php on the home page, maybe it's not the right way to do it
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^php/([0-9a-zA-Z]+).php$ $1 [L]            #I tried to write this, but it doesn't work
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Я подозреваю, что этот вопрос задавался много раз, но я действительно пытался, но безуспешно.

Не могли бы вы помочь мне, пожалуйста? Спасибо!

1 Ответ

1 голос
/ 07 февраля 2020

Ваш пользователь ошибочно ожидает, что URI начнется с /php/, что здесь не так. Также держите правила http -> https сверху, а затем обрабатывайте правило расширения .php следующим образом:

RewriteEngine On

# http -> https redirect
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

# To externally redirect /php/file.php to /file
RewriteCond %{THE_REQUEST} \s/+(?:php/)?(\S+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

# To internally forward file to /php/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/php/$1.php -f
RewriteRule ^(.+?)/?$ php/$1.php [L]
...