apache服务器重定向请求到静态文件传递请求uri作为参数

时间:2015-12-12 09:18:06

标签: php angularjs regex apache .htaccess

我在centos中使用apache 2.2来为angularjs网站提供服务。我希望允许抓取工具正确读取元内容。对于内容,我设置了一个静态php文件,该文件打印一个带有爬虫所需数据的裸html站点。 现在我的问题是将请求从抓取工具重定向到该文件。我目前正在使用

RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteCond %{REQUEST_URI} ^(.*)
RewriteRule ^(.*)$ crawler-processor.php?r=$1 [P]

在.htaccess中但不起作用。我没有运气就尝试了几种正则表达式组合。我不经常在这个级别处理apache服务器,所以我认为规则可能有点乱:)

更新 我找到了这个服务http://martinmelin.se/rewrite-rule-tester/来测试重写正则表达式。使用

RewriteCond %{REQUEST_URI} ^(.*)
RewriteRule ^(.*)$ crawler-processor.php?r=$1 [P]

它匹配得当,所以我开始认为页面中还有其他内容我不知道。这里是完整的.htaccess,也许是覆盖规则的东西

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]

#RewriteBase /
RewriteCond %{HTTP_USER_AGENT} !(facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteRule ^uploads/(.*)$ http://%{SERVER_HOST}/uploads/$1 [L]

# angularjs html5mode
# If an existing asset or directory is requested go to it as it is
RewriteCond %{HTTP_USER_AGENT} !(facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]

# If the requested resource doesn't exist, use index.html
RewriteCond %{HTTP_USER_AGENT} !(facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.html

# SEO - Crawlers redirect to snapshots
RewriteCond %{HTTP_USER_AGENT} ^(facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteCond %{REQUEST_URI} ^(.*)
RewriteRule ^(.*)$ crawler-processor.php?r=$1 [P]

</IfModule>

除了.htaccess之外,是否可以覆盖重写的任何特定服务器设置?

UPDATE2: 检查错误日志后,似乎被击中的文件不正确

File does not exist: /var/www/vhosts/beta.host.com/httpdocs/var

为什么将第一个文件夹名称作为文件名?

0 个答案:

没有答案