перенаправить трафик c с example.com/profile/(whatever)
на example.com/profile
Обратите внимание, что вы должны внутренне переписать непосредственно в файл, который обрабатывает запрос, который я предполагаю /profile.php
вместо того, чтобы полагаться на другое переписывание, чтобы позже добавить расширение. Я предполагаю, что код в /profile.php
уже обрабатывает запрос по мере необходимости.
Я также предполагаю, что «имя пользователя» может состоять только из символов a-z
, A-Z
, 0-9
, _
(подчеркивание) и -
(дефис). Как правило, вы хотите быть максимально точным c.
Попробуйте что-то вроде следующего:
RewriteEngine On
# Disable MultiViews to avoid conflicts with mod_negotiation
# (Since you are using "extensionless URLs")
Options -MultiViews
# Handle requests for `/profile/<username>
RewriteRule ^profile/([\w-]+)$ profile.php [L]
# Append the ".php" extension to any request that does not end in a file extension
RewriteRule ^([^.]+)$ $1.php [L]
В то время как комментарий в вашем коде гласит "Удалить. php". Код на самом деле добавляет расширение файла к URL-адресам, у которых его нет.
В настоящее время это работает только для файлов в документе root (согласно исходному коду), например. /foo
. Например, он ничего не будет делать с /foo/bar
.
Условие, которое проверяет файловую систему (ie. RewriteCond %{REQUEST_FILENAME} !-f
), не требовалось в существующем коде, если только у вас нет реальных файлов, которые не содержит расширение файла? Я также предполагаю, что вам не нужен прямой доступ к каталогам файловой системы (согласно исходному коду).
Нет необходимости экранировать буквальные точки при использовании внутри класса символов.