Я разрабатываю новый сайт в ColdFusion 10 и немного переписываю URL-адреса, используя файл .htaccess. У меня есть три правила, которые работают очень хорошо, когда я вызываю их без других включений. Когда я оборачиваю их в include, я получаю сообщение об ошибке.
Вот мои правила:
RewriteEngine on
RewriteRule ^advertise$ /index.cfm?Section=Advertise
RewriteRule ^bike/([0-9]+)/([0-9]+)/ /index.cfm?Section=Bike&BikeID=$1&FeatureID=$2
RewriteRule ^bike/([0-9]+)/ /index.cfm?Section=Bike&BikeID=$1
Индексная страница указывает, какой раздел показывать, и вызовы включают соответствующий файл, обернутый вокруг верхнего и нижнего колонтитула, например:
include "header.cfm";
include "#VARIABLES.Section#.cfm";
include "footer.cfm";
Проблема в том, что это не совсем работает для страниц «Велосипед», вторые два правила. Похоже, что заголовочный файл включен несколько раз, что делает ссылки на CSS и другие файлы неверными, что приводит к беспорядку на странице. Если я закомментирую верхний и нижний колонтитулы, все будет работать нормально, но верхнего или нижнего колонтитула нет, а это не то, что мне нужно.
// include "header.cfm";
include "#VARIABLES.Section#.cfm";
// include "footer.cfm";
Есть ли что-то в правилах перезаписи URL-адресов, из-за чего страницы велосипеда загружаются несколько раз, а затем терпят неудачу?
http://flyingpiston2012-com.securec37.ezhostingserver.com/
Вы можете попробовать страницу здесь и увидеть проблему, нажав на ссылки. Есть какие нибудь идеи как это починить?
ОБНОВИТЬ
Когда я делаю все свои ссылки абсолютными, включая полный URL-адрес, проблема исчезает.
<cfoutput>
<link href="#APP.Home#/bootstrap/css/bootstrap.css" rel="stylesheet">
</cfoutput>
Тем не менее, мне НЕ нужно указывать абсолютный путь к файлам. Любые намеки на то, почему это не работает для меня?
ОБНОВИТЬ
// THIS FIXES THE PROBLEM
<base href="#APP.Home#/">
<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">
// THIS FIXES THE PROBLEM
<link href="#APP.Home#/bootstrap/css/bootstrap.css" rel="stylesheet">
// THIS IS THE PROBLEM
<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">
<link>
) или вы просто получаете неправильный CSS? Просматривали ли вы журналы перезаписи, чтобы увидеть, выполняются ли правила так, как вы ожидаете (например, один раз для каждого запрошенного файла, и сопоставляются только правильные файлы, и они соответствуют совпало)? Кроме того, используете ли вы Apache или IIS (было сделано предположение, что это Apache, но IIS также может запускать файлы .htaccess с помощью модуля перезаписи ISAPI от Helicon). Пожалуйста, уточните. - person Adam Cameron   schedule 18.06.2012foo
, который может принимать заданное пользователем значение, но не ожидает ничего другого, зачем передавать остальную часть? Тем не менее, в некоторых обстоятельствах могут быть аргументы в обе стороны, я просто имею в виду, что делать это в одностороннем порядке может быть не лучшим подходом. - person Adam Cameron   schedule 19.06.2012