Могу ли я управлять перенаправлениями https, www и no .php только в одном перенаправлении? - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над перенаправлениями для веб-сайта, для которого все страницы должны иметь https и www, а также удалить расширение из любого файла .php.

Мне удалось управлять https + www только в одном перенаправлении, но я не уверен, смогу ли я включить строку удаления .php в одно предложение и объединить все в одном перенаправлении.

#HTTPS + WWW
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L] 

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

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

В настоящее время любой внутренний конец файла с расширением ".php" должен пройти два разных перенаправления для соответствия требованиям.

http://example.com/file.php> https://www.example.com/file.php> https://www.example.com/file

Есть ли способ сделать это одним перенаправлением? Идея состоит в том, что он все еще работает для всего остального в домене, но если файл заканчивается на .php, он перенаправляется на не .php

1 Ответ

0 голосов
/ 11 июля 2019

Изменение этого предложения

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

на

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

И добавление его в верхнюю часть (до перенаправления https) добилось цели.Таким образом, если файл оканчивается на «.php», он автоматически перенаправляется на https и www, поэтому остальные условия не применяются.В противном случае он просто принимает перенаправление https www, приведенное ниже.

...