2016-05-30 4 views
0

Я разработал приложение на PHP с использованием системы маршрутизации через .htaccess, и до сегодняшнего дня мне удалось развернуть это приложение в любой серверной среде без каких-либо проблем ,.htaccess маршрутизация в домене ip с ~ пользовательским параметром (apache UserDir)

Сегодня мой клиент попросил меня развернуть приложение на его сервере, у которого еще нет какого-либо домена, и по этой причине он предоставил мне IP-адрес, чтобы проверить, все ли в порядке. Проблема в том, что для этого IP требуется, чтобы в URL-адресе присутствовал параметр имени пользователя, и это приводит к тому, что выполнение всегда перенаправляется на страницу ошибок 404 по умолчанию сервера.

IP-это что-то вроде этого (некоторые значения были изменены):

http://192.185.65.31/~gef/ 

Если я исполняю только эту ссылку без каких-либо дополнительных параметров, я могу достигнуть моего serverindex.php файл, который настроен, чтобы быть моим DirectoryIndex в .htaccess. Но если я попытаюсь добавить больше параметров, например, язык (en/), я автоматически перенаправляюсь на страницу 404.

Моя .htaccess конфигурация маршрутизации выглядит следующим образом:

DirectoryIndex serverindex.php 

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . serverindex.php 

Эта конфигурация всегда позволяет мне получать и манипулировать URL, как в примере bellowe:

Example: http://example.com/param1/param2/param3 

Array 
(
    [0] => param1 
    [1] => param2 
    [2] => param3 
) 

Как я могу установить .htaccess так, что я оставьте имя пользователя нетронутым в URL-адресе (чтобы сервер мог обработать его и зарегистрировать правильную учетную запись пользователя) и передать следующие данные в качестве параметров в приложение?

Example: http://example.com/~username/p1/p2/p3 

Array 
(
    [0] => p1 
    [1] => p2 
    [2] => p3 
) 
+0

Возможно, переписывание не разрешено в файле apache .conf? –

+0

Это, я выполнил эту строку кода, и получилось true 'strpos (shell_exec ('/ usr/local/apache/bin/apachectl -l'), 'mod_rewrite')! == false' – CIRCLE

ответ

2

У вас есть относительный путь для вашего целевого сценария. Возможно, вам понадобится добавить RewriteBase, чтобы это работало, например.

RewriteBase /~gef/ 
+0

есть ли способ чтобы значение '/ ~ gef /' было динамическим, когда URI начинается с параметра, начинающегося с '~'? – CIRCLE

+0

Я не знаю, и я никогда не пробовал, но так как файл .htaccess находится в определенном каталоге, это не имеет значения. –