Я настроил Usbserver как мой локальный веб-сервер на своем компьютере, так что корень сервера http://localhost:8081/, но все мои веб-проекты находятся в подкаталоге http://localhost:8081/WWW/PHP/ моего локального сервера.localhost vs. remote server htaccess Значения
Сейчас: все работает нормально - все относительные пути работают как надо, но, как я играю с файлом .htaccess, и я хочу, чтобы настроить свою собственную страницу 404.php с относительным путем, как это:
ErrorDocument 404 /php/errors/404.php
... он просто не работает, как ожидалось, потому что это, конечно, указывает на http://localhost:8081/, а не на http://localhost:8081/WWW/PHP/myproject/, что является моим фактически действующим видом корневого сервера (cos, однажды загруженный на удаленный сервер, это станет http://myproject.com/) ,
Это было бы прекрасно на удаленном сервере, но не здесь, на моей локальной структуре сервера. Я также попробовать одно предложение, как это:
ErrorDocument 404 ./php/errors/404.php
... но в конечном итоге с пустой белой страницей с предложением «./php/errors/404.php» отображается.
ВОПРОС: как писать код в .htaccess «универсально», поэтому было бы думать, что корневой сервер находится в «MyProject» директории вместо «http://localhost:8081/», но когда-то загрузил на мой удаленный сервер, скажем http://myproject.com/ его будет работать нормально?
ПОМНИТЕ: Я не могу использовать переписывания корень моего локального сервера в настройках Usbserver, потому что я есть также квант других веб-страниц в «http://localhost:8081/WWW/PHP», так что все они перестают работать таким образом!
Я предполагаю, что есть какой-то код RegEx, который бы разрешил это (как я много раз видел здесь, когда ребята Stackoverflow делали такие вещи таким образом), но я очень плохо чувствую себя в RegEx, поэтому без помощи других я "потерял".
Я уже искал веб-сайт, прежде чем спрашивать об этом здесь: было много решений, но я не нашел таких, которые действительно решали бы эту конкретную задачу (большинство из них предлагает просто переписать корень сервера в моем виртуальном сервере - Usbserver - настройки, которые я не могу по причине, описанной выше).
Мне просто нужно, чтобы он работал нормально на локальном хосте и на удаленном сервере после этого, не переписывая мой код .htaccess каждый раз, когда я загружаю свой сайт на удаленный сервер и наоборот.
PS: Я также заметил, что, когда я создал свою собственную страницу 404.php с absolutle путь для моего локального сервера, как:
ErrorDocument 404 http://localhost:8081/WWW/_PHP_/myproject/php/errors/404.php
... это работает, но это изменить URL для этой страницы 404 вместо того, чтобы оставаться на исходном «не существующем» URL-адресе - почему? При нормальной нормальной не-отредактированной 404 странице изменение сокета URL-адреса меняется, оно остается неизменным (= эта несуществующая ссылка).
EDIT - ЗАВЕРШЕНИЕ РЕШЕНИЕ: Так после нескольких часов игры, просматривая Интернет, ищут любые биты некоторой дополнительной полезной информации, которую я, наконец, получил это работает именно так, как я хотел - другой каталог для страниц ошибок (404 и т.д.) указанный в случае локального хоста и удаленного сервера, вот он (заметьте: это мой собственный код, чтобы он выглядел не очень хорошо - я новичок.Htaccess вещи - но, по крайней мере, это действительно работает для меня, как я ожидал, что он работает):
# RULES FOR ERROR PAGES DIRECTORY IN CASE OF localhost:8081
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^localhost:8081 [NC]
RewriteRule .? /WWW/_PHP_/myproject/php/errors/404.php [L]
# RULES FOR ERROR PAGES DIRECTORY IN CASE OF remote server (actual webpage on public server)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^localhost:8081 [NC]
RewriteRule .? /php/errors/404.php [L]
почему этот вопрос downvoted действительно мистерия ко мне, но хорошо, что угодно, ребята – errerr