(htaccess) Как использовать динамическую базу перезаписи, принудительную косую черту, удалить расширение файла и не конфликтовать с WP в родительском каталоге? - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь создать некоторые правила htaccess для сопровождения интеграции, которую я строю

Я пытался использовать ответы, найденные в разных темах, и даже комбинировать их, но, к сожалению, все не так. Код ниже является самым близким, который я получил, но это также не 100%. Пожалуйста, обратите внимание, мой htaccess-fu не велик. Я могу делать стандартные вещи, но переписывание всего URL на этом уровне мне не под силу, несмотря на попытки учиться. Я надеюсь, с помощью я устраню этот пробел.

Это мой текущий код


RewriteEngine On

RewriteOptions  IgnoreInherit MergeBase




# next 2 lines define a dynamic rewrite base 
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]
# end of dynamic rewrite base

# Rewrites to HTTPS for all URLS and removes.php from file names allowing for "pretty links" i.e. /path/to/file/
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* - [L,R=404]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

Установка такова:

  • example.com / содержит установку сайта Wordpress
  • example.com / payment / содержит созданное мной приложение
  • inside example.com/payment/ - это index.php, файл процессора customer.php и файл ошибок с именем error.php. Он также содержит несколько каталогов
  • Для этого примера есть папка / payment / thankyou /, которая содержит файлы index.php и 3 thankyou. эта папка содержит htaccess только с RewriteEngine On и RewriteOptions Inherit - это предпочтительно, потому что я хотел бы использовать основной htaccess из / payment / для указания всего и просто использовать файлы наследования для любых дополнительных (под) каталогов.

Мне нужно следующее из этого файла:

1) База динамического перезаписи - папка, содержащая интеграцию, может изменить имя или в дальнейшем, я могу расширить интеграцию и потребовать дополнительные каталоги на верхнем уровне. Мне нужен htaccess, чтобы получить это сам. например example.com/payment/ или example.com/portal/ Также в папке / payment / мне нужно, чтобы она охватывала все каталоги, на которые будут перемещаться. (первое существо / спасибо)

2) Все http для отправки на https - это приложение принимает личные данные - необходимо использовать SSL

3) полоса www. выход должен быть только https://example.com/payment/

4) У всех php-файлов необходимо удалить расширение (полезно, если это можно настроить для нескольких типов файлов, например, .html)

5) example.com/payment & example.com/payment/error & example.com/payment/thankyou & example.com/payment/thankyou/annually - все они должны иметь косую черту. (не важно, каталог это или файл. Все URL должны заканчиваться на /)

6) в настоящее время, если мне нужно ввести что-то вроде example.com/payment/index.php или /payment/error.php, я получу файл, который не найден - это должно быть удаление расширения .php и добавление косой черты.

7) в дополнение к # 6, если я перехожу к -> /payment/thankyou/index.php/ (завершающий слеш после расширения), он также загружает страницу, но расширение .php должно быть удалено.

8) для файлов с удаленным расширением, например, error.php при вводе URL-адреса, подобного этому, -> example.com/payment/error перенаправляет на example.com/error/ вместо простого добавления косой черты, он удаляет «URL-адрес» в части оплаты - кажется, это может быть основной проблемой?

9) Мне нужно это, чтобы НЕ конфликтовать с Wordpress.

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

Заранее спасибо всем, кто может мне помочь.

...