Как удалить расширение .php из URL? - PullRequest
0 голосов
/ 24 января 2010

Как я могу удалить расширение .php из URL с помощью mod_rewrite?

Например:

test.com/index.php -> test.com/index/
test.com/contact.php -> test.com/contact/

Ответы [ 2 ]

1 голос
/ 24 января 2010
RewriteEngine on
RewriteRule ^([^/]+)/?$ $1.php

Если пользователь наберет http://example.com/index/, он получит фактическую страницу http://example.com/index.php

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

Это будет работать только для первого уровня каталога; то есть. это не будет совпадать с example.com/index/some/other/stuff - там нет перенаправления.

0 голосов
/ 24 января 2010

Если вы действительно хотите перенаправить запросы на /index.php на /index/, попробуйте следующее правило:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ (/[^?\ ]+)\.php[?\ ]
RewriteRule .+\.php$ %1/ [L,R=301]

А для другого направления:

RewriteRule (.+)/$ $1.php [L]

Вы также можете использовать оба правила одновременно, чтобы получить это поведение:

  • запросы /index.php перенаправляются извне на /index/
  • запросы /index/ внутренне переписываются в /index.php
...