Проблема относительного пути к файлу при использовании правил перезаписи Apache - PullRequest
0 голосов
/ 06 января 2011

Я пытаюсь создать некоторые правила переписывания Apache, которые смогут перенаправлять запросы URI, например,

http://mydomain.com/articles/example на
http://mydomain.com/index.php?site=articles&page=example

Что у меня получилосьЭто далеко:

RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z0-9_]+).html$ index.php?site=$1&page=$2 [L]
RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z0-9_]+)$ index.php?site=$1&page=$2 [L]

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

Например, когда я нахожусь в корне, http://mydomain.com/ или http://mydomain.com/articles, все относительные пути к изображениям разрешаются правильно - images/logo.jpg становится http://mydomain.com/images/logo.jpg илиhtdocs/mydomain/images/logo.jpg соответственно.

Когда я нажимаю одну из моих ссылок на сайте, например, http://mydomain.com/articles/example, Apache (или браузер?) Предполагает, что все мои изображения находятся здесь http://mydomain.com/articles/images/ - совершенно очевидно, чтоэтот путь на самом деле не существует.

Итак, вот мои вопросы:

1. Возможно ли решить эту проблему без изменения всехмои относительные пути к файлам к абсолютным?

Я мог бы использовать root / для всех моих путей на моем фактическомвеб-сервер, поскольку мой домен преимущественно связан.
mydomain.com связан с /html/mydomain на моем веб-сервере - / преобразуется в mydomain.com/, но на моем персональном компьютере я использую XAMPP и / разрешаетв htdocs/ - однако он должен разрешиться в htdocs/mydomain/ просто потому, что я держу несколько сайтов в htdocs

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

2. Должен ли я создать статическую запись DNS на моем персональном компьютере для адаптации к моей сетисервер?

3. Какой метод чаще всего используется?

Заранее спасибо!

С уважением, Себастьян

1 Ответ

1 голос
/ 07 января 2011

Я понял это самостоятельно, отредактировав файл hosts в Windows и файл httpd-vhosts.conf в Apache.

1. Добавление новой статической записи DNS в %SystemRoot%\system32\drivers\etc\hosts

127.0.0.1 www.mydomain.local

2. Добавление новой записи виртуального хоста в %ApacheInstallDir%\conf\extra\httpd-vhosts.conf

<Directory "E:\htdocs">
Order Deny,Allow
Allow from all
</Directory>

NameVirtualHost 127.0.0.1

<VirtualHost 127.0.0.1>
DocumentRoot "E:\htdocs"
ServerName localhost
</VirtualHost>

<VirtualHost 127.0.0.1>
DocumentRoot "E:\htdocs\mydomain"
ServerName www.mydomain.local
</VirtualHost>

Теперь http://www.mydomain.local ведет к htdocs/mydomain напрямую

3. Изменяя все относительные пути и ссылки в моем index.php, просто «укореняя» их с / перед ними, например, <img src="/images/logo.jpg" />

IТакже удалось настроить сайт в Dreamweaver, поэтому я могу правильно использовать дизайн и Live-View.

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