У меня есть небольшая инфраструктура 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 =
?
Используйте приведенное ниже правило, мы перенаправляем любой запрос к 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]