Переписать /countries/country.php?country=usa в /countries/usa/

#php #.htaccess

#php #.htaccess

Вопрос:

Мне нужно иметь отдельную страницу для более чем 50 стран, и я ищу способ не иметь более 50 php-файлов для каждой страны. В идеале я хотел бы переписать:

 /countries/country.php?country=usa
  

к этому:

 /countries/usa/
  

В настоящее время мой .htaccess выглядит следующим образом:

 ErrorDocument 404 /404.php
RewriteEngine On

#RewriteCond %{HTTPS} on
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/] )/$ $1.php
RewriteRule ^([^/] )/([^/] )/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
RewriteRule ^updates/.*.(zip)$ - [F,L,NC]
  

Это в основном заменяет /filename.php с помощью /filename/

Ответ №1:

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

 RewriteRule ^countries/([a-z-] )$ /countries/country.php?country=$1 [L]
  

Вы можете обновить регулярное выражение в соответствии с вашими потребностями.

Комментарии:

1. Примечание: Это правило, возможно, потребуется установить выше существующих правил, чтобы избежать их вмешательства. (Особенно ^([^/] )/([^/] )/$ тот, предполагая, что вы решите добавить завершающую косую черту к шаблону, чтобы получить /countries/usa/ вместо /countries/usa .)