htaccess переписать URL без расширения.php в файл
У меня есть веб-сайт, который использует osCommerce, доступ ко всем страницам которого можно получить напрямую http://www.example.com/pagename.php
, но теперь я хотел бы настроить файл htaccess, чтобы он мог поддерживать http://www.example.com/username
а затем перенаправить на http://www.example.com/account.php?id=username
в то время как другие страницы все еще могут быть доступны с использованием того же старого способа.
Это означает, что если htaccess обнаружит, что URL не имеет расширения, он будет перенаправлен на http://www.example.com/account.php?id=username
,
Спасибо!
2 ответа
Решение
Вам просто нужно одно правило:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)/?$ /account.php?id=$1 [L,QSA]
Вы можете использовать этот код для удаления расширения php из URL:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## hide .php extension snippet
# This will redirect you from http://www.example.com/username.php to
# http://www.example.com/username externally
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# This will redirect you from http://www.example.com/username to
# http://www.example.com/username internally
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]