User 13204940 Ответов: 0

Различные рерайтеры .htaccess не работают вместе


Привет,

Я пытаюсь переписать URL-адреса, такие как
https://api.rix-dev.cf//////////alert////?debug=true&/////ds=/////&a=b
чтобы избавиться от ненужных косых черт как в имени файла, так и в строке запроса.

Там есть файл под названием index.php в корне документа, который принимает метод GET parameter __, чтобы узнать, какой метод вызывает пользователь - в данном случае "alert".

Вот мой файл .htaccess:

RewriteEngine On

RewriteBase /

# Test: https://api.rix-dev.cf//////////alert////?debug=true&/////ds=/////&a=b

# Remove slashes in query string
RewriteCond %{QUERY_STRING} (.*)/(.*)
RewriteRule ^(.*)$ %{REQUEST_URI}?%1%2 [R=307,L]

# Remove double slashes from URL
RewriteCond %{THE_REQUEST} //
RewriteRule ^.*$ $0 [R=307,L]

# Remove 'index.php'
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=307,L]

# Put slash after filename; /alert?a=b -> /alert/?a=b
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)([^/])$ /$1$2/ [R=307,L]

# Add __method parameter
RewriteRule ^(.*)$ index.php?__method=$1 [NC,QSA]


Проблема в том, что он переписывается на
https://api.rix-dev.cf/?__method=alert&debug=true&ds=&a=b
..но следует переписать, чтобы
https://api.rix-dev.cf/alert/?debug=true&ds=&a=b

...с помощью '__method=alert', передаваемого в фоновом режиме. Это прекрасно работает, если 'RewriteRule ^(.*)$ %{REQUEST_URI}?%1%2 [R=307,L]' закомментирован.

Похоже, это происходит потому, что это мешает строке запроса, но я понятия не имею, как подойти к ее исправлению.

Я был бы очень признателен вам за любую помощь в этом деле. Вы можете проверить, как интерпретируется __метод, перейдя к
https://api.rix-dev.cf/<anything>/?debug=true
и глядя на "debug-method".

Что я уже пробовал:

Посещение многих веб-сайтов, которые не работают для моей конкретной ситуации

0 Ответов