2012-06-20 3 views
1

Я хотел бы преобразовать URL как этот http://www.mydomain.com/it/archive.php=321123 в одном, как следующее http://www.mydomain.com/it/R/321123 В книге я нашел кое-что полезное с несколькими практики я получаю следующеессылка при переписывания URL

RewriteEngine On 
RewriteRule ^R/(.*) archive.php?$1 [PT] 

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

<link rel="stylesheet" type="text/css" href="css/layout.css" /> 

является trasnformed в

<link rel="stylesheet" type="text/css" href="www.mydomain.com/it/R/css/layout.css" /> 

Папка R does't существует в реальности, поэтому он не содержит файл CSS, все css-файлы хранятся в папке http://www.mydoman.com/it/css. Утилита для разработчиков Chrome дает мне следующее: Resouce интерпретируется как таблица стилей, но передается с текстом типа MIME/html: «http://www.mydomain.com/it/R/css/style.css».

Возможно изменение адреса, но в то же время ссылки на исходную страницу внутри страницы. Я мог бы написать

<link rel="stylesheet" type="text/css" href="http://www.mydomain.com/it/css/layout.css" /> 

но это не должно работать, когда я работаю в автономном режиме с EasyPHP.

PS: Я хотел бы поместить файл .htaccess в папку http://www.mydomain.com/it, чтобы он затронул только часть языка.

Спасибо!

ответ

2

Вы можете добавить это в заголовок страницы:

<base href="/it/"> 

И это должно сделать это так relative Пути URI (например, «css/layout.css») не перепутаны с /R/ из перезаписи.

Если это невозможно, вы можете попробовать добавить дополнительные правила, чтобы сделать CSS работы:

RewriteRule ^R/css/(.*)$ css/$1 [L] 
+0

Дополнительное правило не делает никаких изменений, но отлично работает! Проблема в том, что страница не получает переменную. Открыть http://www.mydomain.com/it/R/321123 походит на open http://www.mydomain.com/it/archive.php без переменной. – Nicolaesse

+0

На самом деле, я просто понял, что ваши правила, вероятно, были основаны в/it /, попробуйте отредактировать RewriteRule, в том же месте, где указано ваше правило archive.php. –

+0

ОК, я исправил его. Проблема заключалась в том, что я не написал имя переменной (ID). Правильный код RewriteEngine On RewriteRule^R /(.*) archive.php? ID = $ 1 [PT] – Nicolaesse

0

Предполагая, что часть после R/всегда номера, попробуйте следующее:

RewriteEngine On 
RewriteRule ^R/([0-9]*) archive.php?$1 [PT] 
+1

Проблема заключается не в том, что 'RewriteRule' прикладывается к линии CSS, это потому, что ссылка относительный путь и URI браузера - это '/ it/R /', поэтому «css/layout.css» просто добавляется к концу этого. –

+0

Ах, право. Я прыгнул с пистолета на него. – michaelhagedon

Смежные вопросы