2016-07-11 4 views
0

Я читаю, что <Location '/'> фактически соответствует всему домену, а не только корневому местоположению. Я хочу создать Location или LocationMatch блок, который соответствует всем, но http://my.domain.com/ Это означает, что он будет срабатывать, если какие-либо символы следует, что окончательное «/Apache LocationMatch все, кроме корня

Вот как я буду испытывать это:

<LocationMatch "REGEX GOES HERE"> 
    AuthType Shibboleth 
    ShibRequireSession On 
    Require Shibboleth 
</LocationMatch> 

Я думаю Shibboleth может изменить какое-то поведение. Также обратите внимание, что я использую Apache 2.2, но достаточно и решения, которые работают на 2.4.

ответ

0

Вы можете использовать LocationMatch с этим регулярным выражением:

<LocationMatch "^/."> 

</LocationMatch> 

Single DOT после ^/ будет убедиться, что есть по крайней мере один символ после http://my.domain.com/, следовательно, заставляя его не соответствовать целевой страницы.

More details about LocationMatch

Тестирование:

Создать эту директиву как:

<LocationMatch "^/(?<sitename>.+)"> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI}?u=%{env:MATCH_SITENAME} [L,R=302] 
</LocationMatch> 

Теперь, чтобы проверить, что я делаю это:

curl -kI -A "Chrome" -L 'http://localhost/index.php' 
HTTP/1.1 302 Found 
Date: Mon, 11 Jul 2016 22:31:37 GMT 
Server: Apache/2.4.12 (Unix) OpenSSL/1.0.1j PHP/5.6.9 mod_wsgi/3.5 Python/2.7.9 
Location: http://www.localhost/index.php?u=index.php 
Content-Type: text/html; charset=iso-8859-1 

HTTP/1.1 200 OK 
Date: Mon, 11 Jul 2016 22:31:37 GMT 
Server: Apache/2.4.12 (Unix) OpenSSL/1.0.1j PHP/5.6.9 mod_wsgi/3.5 Python/2.7.9 
X-Powered-By: PHP/5.6.9 
Content-Type: text/html; charset=UTF-8 

curl -kI -A "Chrome" -L 'http://localhost/user.php' 
HTTP/1.1 302 Found 
Date: Mon, 11 Jul 2016 22:33:57 GMT 
Server: Apache/2.4.12 (Unix) OpenSSL/1.0.1j PHP/5.6.9 mod_wsgi/3.5 Python/2.7.9 
Location: http://www.localhost/user.php?u=user.php 
Content-Type: text/html; charset=iso-8859-1 

HTTP/1.1 200 OK 
Date: Mon, 11 Jul 2016 22:33:57 GMT 
Server: Apache/2.4.12 (Unix) OpenSSL/1.0.1j PHP/5.6.9 mod_wsgi/3.5 Python/2.7.9 
X-Powered-By: PHP/5.6.9 
Content-Type: text/html; charset=UTF-8 

curl -kI -A "Chrome" -L 'http://localhost' 
HTTP/1.1 200 OK 
Date: Mon, 11 Jul 2016 22:32:47 GMT 
Server: Apache/2.4.12 (Unix) OpenSSL/1.0.1j PHP/5.6.9 mod_wsgi/3.5 Python/2.7.9 
X-Powered-By: PHP/5.6.9 
Content-Type: text/html; charset=UTF-8 

Вы можете ясно видеть, что www Перенаправление не бывает, когда я прошу посадочную страницу, но случается, когда я прошу /index.php

+0

Это срабатывает на корню, а также ... Я добавил некоторые разъяснения о том, как Я тестирую это, возможно, поведение Shibboleth меняет поведение – JLewkovich

+0

Я добавил информацию о тестировании, чтобы показать, как эта директива работает нормально – anubhava

+0

Теперь я тестирую с помощью «TESTING» для заголовка X-TEST-ME и появляется на всех URL-адресах ... Я думаю, вы можете решить это частично, используя RewriteRules, я надеюсь на более чистое решение. – JLewkovich

Смежные вопросы