Как мне сказать Rewrite, что ссылка GET, а не каталог?

1

Это мой код в.htaccess

RewriteEngine On

RewriteRule ^explore/([0-9a-zA-Z\ ]+)/([0-9a-zA-Z]+)/([0-9a-zA-Z]+) renderpage.php?menu=$1&submenu=$2&subsubmenu=$3 [NC]

и когда я печатаю www.mysite.com/explore/Servizi%20ADR/Mediazione/Regolamento (извините итальянский)

  1. Требуется навсегда загрузить
  2. Когда он наконец загружается и я проверяю элемент "исходные ссылки для css и js, как если бы они находились в "explore/Servizi%20ADR/Mediazione/Regolamento/jquery.js "

Поэтому я предполагаю, что мне нужно написать что-то вроде RewriteCond, но я не знаю, что именно

  • 0
    При использовании mod_rewrite, подобного этому, вам нужно ссылаться на любые внешние ресурсы (images / js / css / etc), используя абсолютные пути, иначе браузер увидит URL и сделает запросы в этих папках. Это не то, что вы должны исправить с помощью htaccess или даже попробовать. внешние источники должны указываться в источнике, как /js/jquery.js или /imgs/image.png . Проблема заключается в том, что браузер не знает, что /explore/whatever/ не является папкой, и нет хорошего способа сказать это. Если вы не хотите этот эффект, то вам не следует переписывать URL-адреса.
  • 0
    хорошо, я вижу, спасибо.
Теги:
.htaccess
mod-rewrite

1 ответ

1
Лучший ответ

Вы должны использовать условия, чтобы не включать реальные файлы или директории. А также используйте базовый путь для таких файлов

RewriteEngine On
#if requested URI is real file or dir, do nothing
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

#else process the rule
RewriteRule ^explore/([0-9a-zA-Z\ ]+)/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/? renderpage.php?menu=$1&submenu=$2&subsubmenu=$3 [NC,L]

Также вы можете поместить базовый тег в раздел head вашего html, вместо того, чтобы использовать абсолютные пути для js и css.

<base href="http://www.yoursite.com" />
  • 0
    идеально, что мне было нужно, спасибо большое :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню