Как мне написать файл Apache .htaccess, чтобы заставить «дружественный» URL-адрес?

У меня есть небольшая инфраструктура PHP MVC, которая работает на капле, использующем Ubuntu, и я пытаюсь сделать все URL-адреса удобными '. От:

index.php?u=controller/method/param

Кому:

controller/method/param

Для этого я использую файл .htaccess , содержащий этот код:

Options -MultiViews
RewriteEngine on

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?u=$1 [L,QSA]

С его помощью я могу сделать URL-адрес дружественным, но недружественный URL-адрес все еще существует. Поэтому я могу получить доступ к одному и тому же контенту обоими способами:

index.php?u=controller/method/param

Это то же самое, что:

controller/method/param

Как мне сделать так, чтобы URL-адрес всегда был дружелюбным? Больше нет index.php? U = ?

1
задан 21 July 2019 в 01:46

1 ответ

Используйте приведенное ниже правило, мы перенаправляем любой запрос к index.php, у которого есть параметр запроса u, на вновь созданный красивый URL-адрес.

Options -MultiViews
RewriteEngine on

RewriteBase /
RewriteCond %{REQUEST_URI} ^index.php$
RewriteCond %{QUERY_STRING} ^u=(.*)$
RewriteRule ^ http://example.com/%1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*)$ index.php?u=$1 [L,QSA]
1
ответ дан 14 December 2019 в 14:51

Другие вопросы по тегам:

Похожие вопросы: