2016-01-21 1 views
0

В Problem detecting empty REQUEST_URI with Apache mod_rewrite, его уже отметил, мы можем использоватьКак проверить, не является ли REQUEST_URI пустым в apache RewriteCond httpd.conf?

RewriteCond %{REQUEST_URI} ^.$ 

или

RewriteCond %{REQUEST_URI} "^/$" 

мне нужно проверить, если его не пусто, то перенаправить его на пустой (игнорировать все строки после HTTP_HOST).

Я попытался

RewriteCond %{REQUEST_URI} !"^/$" 
RewriteRule .* http://%{HTTP_HOST} [L,R=301] 

, но не работает. Это просто вызвало бесконечный цикл.

Также я попытался RewriteCond %{REQUEST_URI} !^/$ также RewriteCond %{REQUEST_URI} !^\/$ также RewriteCond %{REQUEST_URI} "!^/$" также RewriteCond %{REQUEST_URI} "!^\/$"

ответ

0

Как насчет:

RewriteRule ^/+ $ http://% {HTTP_HOST} [L, R = 301]

+0

это не делает. Работа. когда я попробовал http://xx.com/asdf, он перенаправляется на http://xx.com. но тогда это вызвало бесконечный цикл ag – harrrrrrry

+0

. Запрос только для вашего имени сайта (xx.com) все еще будет служить чему-то. Вы должны установить условие, чтобы игнорировать это. Если вы просто запрашиваете имя сайта (xx.com), то вы будете обслуживаться независимо от директивы DirectoryIndex, по умолчанию являющейся /index.html. Поэтому вам нужно поставить предыдущее условие, чтобы избежать выполнения для этого конкретного URI. Например: RewriteCond% {REQUEST_URI}! ^/Index.html $ RewriteRule^/. + $ Http: //% {HTTP_HOST} [L, R = 301] –

+0

Я попытался отладить с помощью 'RewriteRule. * Http : //test.com/% {REQUEST_URI} [L, R = 301] ', чтобы подтвердить окончательный REQUEST_URI. он показывает мне REQUEST_URI - это единственный '/'. Кроме того, я попробовал ур подход 'RewriteCond% {REQUEST_URI}! ^/Index' (просто сопоставить любое потенциальное имя индекса), он тоже не работает. – harrrrrrry

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