Относительные пути и т. Д. На сервере Apache - PullRequest
2 голосов
/ 04 января 2011

Я действительно застрял здесь.

У меня сразу 2 вопроса:

Во-первых, мой сайт хранится (как на локальной разработке, так и на живом сервере) в подкаталоге ... так как я работаю на нескольких сайтах. т.е.

/Sites/www.mysite.com/(site files here)

Когда я ссылаюсь на файлы на своих веб-страницах, я хочу сослаться, скажем, на мой каталог /images без жесткого кодирования в каждом случае как /www.mysite.com/images/myfile.jpg

Есть ли способ просто переопределить, как ведущий "/" интерпретируется сервером?

Второй вопрос, касающийся PHP mod_rewrite

У меня есть этот набор правил переписывания. Цель состоит в том, чтобы превратить www.mysite.com/faq в www.mysite.com/index.php?page="faq"

RewriteEngine On
RewriteCond %{REQUEST_URI} !mysite.com
RewriteRule (.*) mysite.com/$1
RewriteRule ^([a-zA-Z0-9_-]+)$ /mysite.com/index.php?site=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ /mysite.com/index.php?site=$1

У меня нет проблем, когда URL передается в формате от 2-го к последнему (как в примере выше). Однако, если добавляется завершающий символ "/": www.mysite.com/faq/, ссылки на внешние скрипты прерываются: (например, src=js/script.js) ...

Ответы [ 2 ]

2 голосов
/ 04 января 2011

На вопрос №. 1:

Apache интерпретирует начальный слеш согласно DocumentRoot или Alias значениям

Итак, если вы хотите сделать свою жизнь проще, создайте VirtualServer с этим

DocumentRoot "/Sites/www.mysite.com"

Документация Apache: DocumentRoot

или Alias

Alias /mysite /Sites/www.mysite.com

Документация Apache: псевдоним

или использовать относительную к пути адресацию.

На вопрос № 2:

RewriteEngine On
RewriteCond %{REQUEST_URI} !mysite.com
RewriteRule (.*) mysite.com/$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)$ /mysite.com/index.php?site=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/$ /mysite.com/index.php?site=$1 [L]

согласно netcoder совету.

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

Вопрос 1: не ставьте начальную косую черту, и путь будет относительно местоположения файла вашего вызывающего скрипта.

так что если вызывающий скрипт находится в каталоге

/ www.mysite.com / myscript.php

и вы используете filepath в вашем скрипте

изображения / myfile.jpg

это должно работать на то, что вы делаете, и привести к

/ www.mysite.com / изображения / myfile.jpg

...