Я видел этот пример того, как изменить index.php на имя URL-адреса
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-s RewriteRule ^([a-z0-9-_.]+)/?$ index.php?id=$1 [NC,L] RewriteRule ^([a-z0-9-_.]+)/([a-z0-9]+)/?$ index.php?id=$1&goto=$2 [NC,L]
Этот файл .htaccess
находится в www.site.com/map/
так что это происходит с www.site.com/map/index.php
на www.site.com/map/country
он переписывает index.php на имя страны в URL-адресе, проблема в том, что когда я получаю каталог выше или подкаталог, например www.site.com/map/countryname/state
он просто replace the
index.php inside the state directory to the
индексу .php inside the map directory
как это решить? или как сделать это применимым только к текущему каталогу?
Вот структура сайта dir http://ufile.io/3dii7, поэтому, когда я перехожу на site/map/state/
это работает, но мне нужно имя страны в url для acess state dir, как этот site/map/country/state/
Имейте ваш .htaccess как это:
RewriteEngine On # skip all rules below this for files and directories RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([\w-.]+)/?$ index.php?id=$1 [L,QSA] RewriteCond %{DOCUMENT_ROOT}/site/map/$2 -f RewriteRule ^([\w-]+)/(.+)/?$ $2?id=$1&goto=$2 [L,QSA] RewriteCond %{DOCUMENT_ROOT}/site/map/$2/index.php -f RewriteRule ^([\w-.]+)/([a-z0-9]+)/?$ $2/index.php?id=$1&goto=$2 [NC,L,QSA] RewriteRule ^([\w-.]+)/([a-z0-9]+)/?$ index.php?id=$1&goto=$2 [NC,L,QSA]