HTACCESS : Замените URL-адрес с помощью регулярного выражения

#regex #.htaccess

Вопрос:

У меня есть этот URL-адрес

 http://localhost:8888/dochealth/child-doc?cat=doctor
 

и хотел заменить его регулярным выражением .htaccess, чтобы оно стало

 http://localhost:8888/dochealth/child-doc/doctor
 

до сих пор я пробовал это РЕГУЛЯРНОЕ выражение, но оно не работает

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteRule ^child-doc/([0-9a-zA-Z_-] ) child-doc?cat=$1 [NC,L]
</IfModule>
 

Ответ №1:

Пусть будет так:

 Options -MultiViews
RewriteEngine On

RewriteRule ^child-doc/([w-] ) child-doc.php?cat=$1 [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(. ?)/?$ $1.php [L]
 

Изменения заключаются в:

  1. Переместите .php правило обработчика расширений в нижнюю часть
  2. Использование child-doc.php в других правилах
  3. Дополнительная часть QSA (добавление строки запроса) в том же правиле
  4. Отключение MultiViews для отключения службы согласования контента Apache