2016-10-12 7 views
1

Я использую следующие в моем файле .htaccessPHP функция file_exists не работает при использовании .htaccess правила перезаписи

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^shopping-bag/?$ shoppingbag.php [L,QSA] 

Это изменяет URL

http://www.domain.com/foldername/shoppingbag.php

в

www.domain.com/foldername/shopping-bag/

Все мое содержание помещается в

/WWW/имя_папки/

Я установил все CSS и JS файлов объявив глобальную переменную со значением http://www.domain.com/foldername/ и поместите эту переменную до пути к файлам css и js. Поскольку file_exists не будет работать на URL я пытался делать следующее

../uploads/image.jpg

Фактический путь к файлу изображения является

/WWW /foldername/uploads/image.jpg

Я пытался делать

var_dump(../uploads/image.jpg) 

на

http://www.domain.com/foldername/shopping-bag/

, но не работает. И я не хочу использовать <base href="">

+0

Как насчет ''? – JustOnUnderMillions

+0

Я думаю, что часть не отображалась без кодовой метки. Я не хочу использовать base href –

+1

'Я исправил все css' тоже не самый лучший способ, но это был просто комментарий от меня :) – JustOnUnderMillions

ответ

1

Если вы не изменили текущий рабочий каталог РНР с чем-то вроде chdir($someDir) все функции файловой системы должны в основном вести себя по отношению к директории текущего скрипта.

В вашем случае file_exists('uploads/image.jpg') или file_exists('./uploads/image.jpg') (обратите внимание на одну точку, а это означает текущий каталог), поэтому должен возвращать true, если файл существует на самом деле в том месте, вы сказали, что существует.

Обратите внимание, что <base href=""> не имеет никакого отношения к PHP скрипт, потому что PHP является на стороне сервера язык, в то время как <base> является стороне клиента HTML элемент.

Чтобы лучше понять различие между серверной и клиентской стороной (программированием), посмотрите, например, на this answer.

Кроме того, если вы не хотите продемонстрировать что-то другое, var_dump(../uploads/image.jpg) не выдаст ничего значимого. Вы не можете использовать var_dump(), но, возможно, вы уже знали об этом.

0

foldername/shoppingbag.php это файл, который вы работаете и foldername/uploads/image.jpg это файл, он заинтересован. Относительный путь должен быть просто uploads/image.jpg.

Что это дает?

var_dump('uploads/image.jpg');