Лишняя псевдодиректория в URL и слэш

Статус
В этой теме нельзя размещать новые ответы.

megadude

Гуру форума
Регистрация
6 Сен 2006
Сообщения
184
Реакции
68
Дано:
Код:
Options +FollowSymLinks

RewriteEngine On
RewriteRule ^(.+)$ $1.php [L,QSA]
Ссылка вида localhost/site/index работает правильно и перенаправляется на index.php
Но localhost/site/index/ (со слэшем в конце) открывается без javascript и css файлов. В index файле к ним ведут относительные УРЛ, напр. <script src="js/script.js" ...>.

И путь к джаваскриптам, картинкам и цсс после реврайта выглядит так - localhost/site/index/css/styles.css или localhost/site/index/images/logo.jpg, т.е. возникает лишняя псевдодиректория и файлы естественно не подключаются.

При этом УРЛ должен быть со слэшем в конце, потому как возможны переменные, напр. localhost/site/index/some-text/12

Коротко: должны работать все варианты:

  • localhost/site/index => localhost/site/index.php
  • localhost/site/index/ => localhost/site/index.php
  • localhost/site/index/some-text/12 => localhost/site/index.php?text=some-text&num=12
Буду благодарен за любую подсказку.

 
попробуем решить в лоб?

Код:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^.+/index$ index.php [L,QSA]
RewriteRule ^.+/index/$ index.php [L,QSA]
RewriteRule ^.+/index/([^/]+)/([^/]+)$ index.php?text=$1&num=$2 [L,QSA]
 
Код:
RewriteRule ^(.+)(\/)?$ $1.php [QSA,L]
RewriteRule ^index/([^/]*)/([^/]*)(\/)?$ index.php?text=$1&num=$2 [QSA,L]

Пропиши еще тег BASE после HEAD
Код:
<head>
<base href="http://localhost/site/">
 
попробуем решить в лоб?

Код:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^.+/index$ index.php [L,QSA]
RewriteRule ^.+/index/$ index.php [L,QSA]
RewriteRule ^.+/index/([^/]+)/([^/]+)$ index.php?text=$1&num=$2 [L,QSA]


С минимальными поправками работает красиво
Код:
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f

RewriteRule ^index$ index.php [L,QSA]
RewriteRule ^index/$ index.php [L,QSA]
RewriteRule ^index/([^/]+)/([^/]+)$ index.php?text=$1&num=$2 [L,QSA]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху