/ / htaccess - Переадресовувати все через файл php - php, apache, .htaccess, mod-rewrite, redirect

htaccess - Переадресовувати все через php-файл - php, apache, .htaccess, моди-перезапису, перенаправлення

RewriteEngine on
RewriteCond %{REQUEST_URI} !(.|/$)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ api.php?url=$1 [L]

Нагорі відображається моя поточна конфігурація.

Проблема з цим полягає в тому, що вона, схоже, перенаправляється, якщо каталог або файл існує після папки у файлі htaccess.

Як я можу переписати це, так це буквально просто переспрямовує кожний окремий запит api.php з повним запитом шляху? Я не бачу, чи існують каталоги чи файли в файлі htaccess, я можу зробити це в api.php, Я просто хочу натиснути всі запити через цей файл.

Відповіді:

1 для відповіді № 1

Ви можете використовувати:

RewriteEngine on

RewriteCond %{REQUEST_URI} !(.|/$)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

RewriteRule ^((?!api.php$).*)$ api.php?url=$1 [L,QSA,NC]

Дивитися вперед (?!api.php$) означає переписати все, крім /api.php до /api.php з параметром запиту url.


0 для відповіді № 2

подобається це:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*)$ /api.php?path=$1 [NC,L,QSA]

переконайтеся, що у вас є це до маршруту

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d