CSS / Javascript не работает в папках / каталогах при использовании правил перезаписи в .htaccess - PullRequest
0 голосов
/ 26 января 2012

Я использую файл .htaccess, чтобы сделать мои URL оптимизированными для SEO, но когда я добавляю папку в URL, CSS и Javascript перестают загружаться.

Если я использую этот URL, он работает (где id ="123" и str = "some-package-name"): http://www.mysite.com/package123_some-package-name

RewriteRule package(.*)_(.*)$ packages.php?id=$1&str=$2

Но если я использую этот URL-адрес, это не так (где id = "123" и str = "some"-package-name "): http://www.mysite.com/package123/some-package-name

RewriteRule package(.*)/(.*)$ packages.php?id=$1&str=$2

Я бы предпочел использовать URL-адрес на основе каталога, если это возможно.

Также есть ли способ отправить форму через.htaccess через метод POST к любому другому файлу?

Может кто-нибудь помочь, пожалуйста ... заранее спасибо!

1 Ответ

2 голосов
/ 26 января 2012

Вы предпочитаете использовать URL на основе каталога.Это нормально.

Проблема в том, что вы, скорее всего, используете относительные URL-адреса для CSS.Попробуйте использовать относительные или абсолютные URL-адреса домена к css.

Ссылка на css, вероятно, является относительной в вашем заголовке, поэтому указание на "style / asdf.css" приводит к "http://www.mysite.com/style/asdf.css" в первый рази "http://www.mysite.com/package123/style/asdf.css" во второй раз, когда браузер ищет css относительно местоположения текущего документа.И браузер считает, что он находится в папке.

Используйте абсолютные или относительные к домену URL для CSS.

Абсолютный, начиная с протокола, такого как http: // (good):

<­link rel="stylesheet" type="text/css" href="http://www.mysite.com/style/asdf.css">

Относительно домена, начиная с / (хорошо):

<­link rel="stylesheet" type="text/css" href="/style/asdf.css">

Относительно, начиная с чего-то другого (в большинстве случаев плохо):

<­link rel="stylesheet" type="text/css" href="style/asdf.css">

Этотакже верно для javascripts.

EDIT : так как я проверил ваш сайт, я увидел, что каждый URL страдает от этой проблемы там.Попробуйте нажать «Однопользовательский пакет» несколько раз и посмотреть, что он делает с URL.Это проблема с относительными URL.Когда вы используете относительные URL-адреса, один и тот же URL-адрес из разных папок указывает на разные места.

Если вы планируете использовать виртуальные папки при перезаписи мода, вы не должны использовать относительные URL-адреса.

Этоозначает, что такие строки приведут к ошибкам:

<li><a href="package3/night-delight">Night delight</a></li>

и

<li><a href="book-your-demo">Book your demo</a></li>

или

<script type="text/javascript" src="js/validations-compressed.js"></script>

или

<li class="slct"><a href="index">Home</a></li>

также

<a href="index.php" id="logo" title="CGBroadband.com">
<link rel="icon" type="image/png" href="images/template/fav.png" />

они будут указывать везде на каждой странице.Так что это не просто проблема CSS, это проблема каждой ссылки на странице.

В вашем случае самым простым решением будет поставить / перед всеми вашими URL .

Редактировать : Также проверьте это: я нашел другое рабочее решение, которое может быть даже проще: https://developer.mozilla.org/en/HTML/Element/base

Это означает, что если вы поставите

<base href="http://www.mysite.com/" />

в вашем , тогда все относительные URL будут относительными к этому!Аккуратно, не так ли?Но я слышал, как кто-то жаловался на совместимость с IE на этом, так что проверьте это во всех браузерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...