Я пытаюсь отладить это в течение последних двух дней, и я нахожусь на своем конце.Apache rewrite- Proxying добавляет дополнительный index.php
Я пытаюсь перенаправить запрос на http://localhost:xxx
, когда строка запроса содержит escaped_fragment
. Правило перезаписи сопоставлено и направлено на прокси-сервер, но я не уверен, почему правило перезаписывания перезапущено, и к URL-адресу запроса добавляется index.php
.
Запрос URL:
http://local.xxx.in/?_escaped_fragment
мой файл .htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^woohoo.in
RewriteRule (.*) http://www.woohoo.in/$1 [R=301,L]
RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
# Only proxy the request to Phantomjs if it's a request for HTML
RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff))(.*) http://localhost:32768/$2 [NC,P,END,QSA,T=text/html]
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} \.html$
RewriteRule ^(.*)\.html$ $1 [L,R]
RewriteRule ^inc/.*$ index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
RewriteLog для запроса
[rewrite:trace3] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] strip per-dir prefix: /home/robert/work/projects/gb/giftbigui/ ->
[rewrite:trace3] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] applying pattern '(.*)' to uri ''
[rewrite:trace4] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] RewriteCond: input='local.woohoo.in' pattern='^woohoo.in' => not-matched
[rewrite:trace3] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] strip per-dir prefix: /home/robert/work/projects/gb/giftbigui/ ->
[rewrite:trace3] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] applying pattern '^(?!.*?(\\.js|\\.css|\\.xml|\\.less|\\.png|\\.jpg|\\.jpeg|\\.gif|\\.pdf|\\.doc|\\.txt|\\.ico|\\.rss|\\.zip|\\.mp3|\\.rar|\\.exe|\\.wmv|\\.doc|\\.avi|\\.ppt|\\.mpg|\\.mpeg|\\.tif|\\.wav|\\.mov|\\.psd|\\.ai|\\.xls|\\.mp4|\\.m4a|\\.swf|\\.dat|\\.dmg|\\.iso|\\.flv|\\.m4v|\\.torrent|\\.ttf|\\.woff))(.*)' to uri ''
[rewrite:trace4] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] RewriteCond: input='curl/7.35.0' pattern='baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\\ link\\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator' [NC] => not-matched
[rewrite:trace4] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] RewriteCond: input='_escaped_fragment_=1' pattern='_escaped_fragment_' => matched
[rewrite:trace2] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] rewrite '' -> 'http://localhost:32768/'
[rewrite:trace2] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] escaped URI in per-dir context for proxy, http://localhost:32768/ -> http://localhost:32768/
[rewrite:trace2] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] forcing proxy-throughput with http://localhost:32768/
[rewrite:trace1] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#18596f0/initial] [perdir /home/robert/work/projects/gb/giftbigui/] go-ahead with proxy request proxy:http://localhost:32768/?_escaped_fragment_=1 [OK]
[rewrite:trace3] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#1865e00/subreq] [perdir /home/robert/work/projects/gb/giftbigui/] strip per-dir prefix: /home/robert/work/projects/gb/giftbigui/index.php -> index.php
[rewrite:trace3] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#1865e00/subreq] [perdir /home/robert/work/projects/gb/giftbigui/] applying pattern '^(?!.*?(\\.js|\\.css|\\.xml|\\.less|\\.png|\\.jpg|\\.jpeg|\\.gif|\\.pdf|\\.doc|\\.txt|\\.ico|\\.rss|\\.zip|\\.mp3|\\.rar|\\.exe|\\.wmv|\\.doc|\\.avi|\\.ppt|\\.mpg|\\.mpeg|\\.tif|\\.wav|\\.mov|\\.psd|\\.ai|\\.xls|\\.mp4|\\.m4a|\\.swf|\\.dat|\\.dmg|\\.iso|\\.flv|\\.m4v|\\.torrent|\\.ttf|\\.woff))(.*)' to uri 'index.php'
[rewrite:trace4] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#1865e00/subreq] [perdir /home/robert/work/projects/gb/giftbigui/] RewriteCond: input='curl/7.35.0' pattern='baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\\ link\\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator' [NC] => not-matched
[rewrite:trace4] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#1865e00/subreq] [perdir /home/robert/work/projects/gb/giftbigui/] RewriteCond: input='_escaped_fragment_=1' pattern='_escaped_fragment_' => matched
[rewrite:trace2] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#1865e00/subreq] [perdir /home/robert/work/projects/gb/giftbigui/] rewrite 'index.php' -> 'http://localhost:32768/index.php'
[rewrite:trace2] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#1865e00/subreq] [perdir /home/robert/work/projects/gb/giftbigui/] escaped URI in per-dir context for proxy, http://localhost:32768/index.php -> http://localhost:32768/index.php
[rewrite:trace2] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#1865e00/subreq] [perdir /home/robert/work/projects/gb/giftbigui/] forcing proxy-throughput with http://localhost:32768/index.php
[rewrite:trace1] [pid 8971] mod_rewrite.c(475): [client 127.0.0.1:57756] 127.0.0.1 - - [local.woohoo.in/sid#14b31a0][rid#1865e00/subreq] [perdir /home/robert/work/projects/gb/giftbigui/] go-ahead with proxy request proxy:http://localhost:32768/index.php?_escaped_fragment_=1 [OK]
------------ ----- EDIT ----
Моя версия apache 2.4.12, и я обнаружил, что это отлично работает в 2.2.x
Я думаю, что mod_dir ищет ваш DirectoryIndex'а один за другим через подзапрос. Возможно, это связано с этой ошибкой, которая должна была быть исправлена в 2.4.9: PR53929. – covener
Похоже, это исправление может быть недостаточно, если вы используете флаг [P]! – covener