タグは機能します<base>
が、仕様に従って、ページ全体に適用されます。これにより、ページ上の他の相対URLが破損します。
他のすべてのURLが絶対的なものであることを確認したくない場合は、次善の策はおそらくNokogiriを使用してそれらのURLを変換することです。例えば
require 'uri'
require 'nokogiri'
base_uri = URI 'http://example.com/'
html = %{ <!DOCTYPE html>
<html><body>
<ul>
<li><a href="/some_relative_url.html">Relative</a></li>
<li><a href="http://stackoverflow.com/">Absolute</a></li>
<li><img src="/a_relative_image.png" /></li>
</ul>
</body></html>
}
doc = Nokogiri::HTML html
attrs = %w( @href @src )
doc.search( *attrs ).each do |attr|
path = URI attr
attr.value = ( base_uri + path ).to_s unless path.absolute?
end
puts doc
# => <!DOCTYPE html>
# <html><body>
# <ul>
# <li><a href="http://example.com/some_relative_url.html">Relative</a></li>
# <li><a href="http://stackoverflow.com/">Absolute</a></li>
# <li><img src="http://example.com/a_relative_image.png" /></li>
# </ul>
# </body></html>