Различные рерайтеры .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".
Что я уже пробовал:
Посещение многих веб-сайтов, которые не работают для моей конкретной ситуации