ли что-то подобное возможно в Apache ... (т.е. перенаправлять на внешний URL с пути вызывая 403 ошибки передается вместе)Apache ErrorDocument External Redirect с переменными
ErrorDocument 403 http://www.sample.com/{{REDIRECT_URL}}
ли что-то подобное возможно в Apache ... (т.е. перенаправлять на внешний URL с пути вызывая 403 ошибки передается вместе)Apache ErrorDocument External Redirect с переменными
ErrorDocument 403 http://www.sample.com/{{REDIRECT_URL}}
Я предполагаю, что это возможно, как док сказать .. http://httpd.apache.org/docs/2.0/mod/core.html#errordocument
Может быть так:
ErrorDocument 403 http://www.sample.com/?do=somthing
Это не добавляет запрошенный URL ... Я думал, что в моем вопросе ясно. – Pykler
Я создаю/Directo публикации ry, но я хочу, чтобы это будет обслуживаться главным index.php, где есть файл в этом каталоге.
/Publication? Page = 1 будет обслуживаться /index.php, /Publication/file.pdf - это файл, находящийся в этом самом каталоге.
Ошибка Apache returend 403, поскольку каталог/публикация не имеет права на включение в список. Вы перенаправляете ошибку 403 в /index.php, вы не можете перехватывать переменные catch. Я думаю, что можно использовать переменную REDIRECT_QUERY_STRING, но это может испортить мои php-классы.
Я изменил конфигурацию mod_rewrite, чтобы поймать службу каталогов, см. «#», Удаленную директиву ErrorDocument 403, так как нет необходимости.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]
</IfModule>
Что у меня есть вариант конфигурации
/Publication > /index.php?path=Publication
/Publication/?page=1 > /index.php?path=Publication&page=1
/Publication/file.pdf > /Publication/file.pdf
Где ваш '.htaccess'? Он находится внутри директории '/ Publication'? Если это так, у вас есть 'DirectorySlash Off' где-то в вашем' .htaccess'? В противном случае, как вы можете сказать, что '/ Publication> /index.php?path = Publication', когда по умолчанию Apache будет перенаправлять '/ Publication' на'/Publication/', если задано' DirectorySlash On', а затем переписать правила переписывают '/ Publication /> /index.php? path = Publication /'. Я прошу вас только потому, что мне интересно узнать о вашей настройке, и я бы хотел, чтобы карта, скажем, '/ Publication', была непосредственно на' /index.php? Path = Publication', не позволяя Apache перенаправлять на '/ Publication /'. – tonix
ErrorDocument
, к сожалению, не поддерживает расширение серверных переменных. Вы можете попробовать использовать локальный скрипт, который выдаст вам перенаправление.
ErrorDocument 403 /cgi-bin/error.cgi
Обратите внимание, что сценарий должен быть локальным, иначе вы не получите REDIRECT_*
переменные, передаваемые. И в самом скрипте вы можете оформить перенаправлять заявление:
#!/usr/bin/perl
my $redirect_status = $ENV{'REDIRECT_STATUS'} || '';
my $redirect_url = $ENV{'REDIRECT_URL'} || '';
if($redirect_status == 403) {
printf("Location: http://%s%s\n", 'www.sample.com', $redirect_url);
printf("Status: %d\n", 302);
}
print "\n";
См Apache документацию для более прозрений http://httpd.apache.org/docs/2.4/custom-error.html
Да! Но только начиная с Apache 2.4.13:
С 2.4.13, синтаксис выражения можно использовать внутри директивы производства динамических строк и URL.
(от https://httpd.apache.org/docs/2.4/mod/core.html#errordocument)
следующая конфигурация приведет к HTTP 302 ответа:
ErrorDocument 403 http://www.example.com%{REQUEST_URI}
Обратите внимание на отсутствие косой черты, потому что %{REQUEST_URI}
начинается с косой черты.
Адрес {{REDIRECT_URL}} - запрашиваемый адрес. – Pykler