В 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} "!^\/$"
это не делает. Работа. когда я попробовал http://xx.com/asdf, он перенаправляется на http://xx.com. но тогда это вызвало бесконечный цикл ag – harrrrrrry
. Запрос только для вашего имени сайта (xx.com) все еще будет служить чему-то. Вы должны установить условие, чтобы игнорировать это. Если вы просто запрашиваете имя сайта (xx.com), то вы будете обслуживаться независимо от директивы DirectoryIndex, по умолчанию являющейся /index.html. Поэтому вам нужно поставить предыдущее условие, чтобы избежать выполнения для этого конкретного URI. Например: RewriteCond% {REQUEST_URI}! ^/Index.html $ RewriteRule^/. + $ Http: //% {HTTP_HOST} [L, R = 301] –
Я попытался отладить с помощью 'RewriteRule. * Http : //test.com/% {REQUEST_URI} [L, R = 301] ', чтобы подтвердить окончательный REQUEST_URI. он показывает мне REQUEST_URI - это единственный '/'. Кроме того, я попробовал ур подход 'RewriteCond% {REQUEST_URI}! ^/Index' (просто сопоставить любое потенциальное имя индекса), он тоже не работает. – harrrrrrry