Я пытаюсь создать правило htaccess для перезаписи следующих URL:
localhost/abc/def/1 (or with trailing slash would be fine)
до
localhost/abc/def.php?id=1
Доступ только к localhost/abc/def/
также действителен, и он работает.
Мой код на данный момент:
RewriteEngine On
Options +FollowSymLinks
Options All -Indexes
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.jpeg|robots\.txt)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^index$ ./src/index.php [NC,L] # it works
RewriteRule ^def/?$ ./src/def.php [NC,L] #works too!
RewriteRule ^def/(.*)?$ ./src/def.php?id=$1 [NC,L] #this doesnt
Я прочитал несколько постов, подобных этому Переписать правило для определения только чисел , но они не работают для меня.
Странно то, что если я изменяю косую черту между def и id с подчеркиванием, это работает примерно так:
RewriteRule ^def_(.*)?$ ./src/def.php?id=$1 [NC,L]
Но URL становится localhost/abc/def_1
и невыглядит так хорошо.
ОБНОВЛЕНИЕ: Структура сайта:
/home/username/public_html/abc/ (have multiple websites on public_html)
|_media/
|____js/
|____css/
|____images/
|_src/
|____def.php
|____fgh.php
|_.htaccess
Когда правило перенаправления def / 1 работает, URL-адреса мультимедиа на странице также используютсяпереведено на: http://localhost/abc/def/css/bootstrap.min.css
Спасибо!