2016-11-09 1 views
0

Я пытаюсь установить правило перезаписи для моего сайта через .htaccess. Он отлично работает, когда доступ по имени домена, как -.htaccess путь rewriterule не найден при доступе через ip-адрес

http://www.example.com/admin/my/virtual/path

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

Я связываю IP с моим виртуальным путем, когда я нахожусь http://192.168.1.2/, он показывает http://www.example.com/admin/ страница i.e. домашняя страница администратора без каких-либо проблем.

После ссылка не работает и возвращается страница 404 -

http://192.168.1.2/my/virtual/path

Я думаю, его .htaccess вопрос. Вот мой .htaccess код FYI

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
# The following rule tells Apache that if the requested filename 
# exists, simply serve it. 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^index.php [L] 
# The following rewrites all other queries to index.php. The 
# condition ensures that if you are using Apache aliases to do 
# mass virtual hosting, the base path will be prepended to 
# allow proper resolution of the index.php file; it will work 
# in non-aliased environments as well, providing a safe, one-size 
# fits all solution. 
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ 
RewriteRule ^(.*) - [E=BASE:%1] 
RewriteRule ^([^?]*)$ %{ENV:BASE}index.php [NC,L] 

Вот моя конфигурация ВХост для IP -

<VirtualHost xxx.xxx.xxx.xxx:80> 
    DocumentRoot /path/of/my/hosting/location/public_html/admin 
    <Directory "/path/of/my/hosting/location/public_html/admin"> 
     allow from all 
     Options None 
     Require all granted 
    </Directory> 
</VirtualHost> 

Вот мой домен хостинг часть -

<VirtualHost example.com:80> 
    DocumentRoot /path/of/my/hosting/location/public_html 
    <Directory "/path/of/my/hosting/location/public_html"> 
     allow from all 
     Options +FollowSymLinks 
     allowoverride all 
     Require all granted 
     HostNameLookups on 
    </Directory> 
    ServerName example.com 
    ServerAlias www.example.com 
</VirtualHost> 
+0

Я почти уверен, что это связано с призраком, а не с mod_rewrite. Каково содержание вашего призрака? – Dekel

+0

это не связано с vhost, потому что я могу получить доступ к моей индексной странице через http://192.168.1.2/, а также через http://www.example.com/ –

+0

вы проверили журналы на сервере? – Dekel

ответ

1

виртуальный хост часть домена имеет allowoverride all внутри, который сообщает apache разрешить внесенные изменения .htaccess, однако часть vhost ip не имеет его.

Добавить allowoverride all в ip vhost-block, и все должно быть в порядке.

<VirtualHost xxx.xxx.xxx.xxx:80> 
    DocumentRoot /path/of/my/hosting/location/public_html/admin 
    <Directory "/path/of/my/hosting/location/public_html/admin"> 
     allowoverride all 
     allow from all 
     Options None 
     Require all granted 
    </Directory> 
</VirtualHost>