Negative SEO Attack–What Do You Do?
A couple of years ago, I (and all webmasters) got a lot of Google Analytics referral spam. It really angered me, so I wrote an article about every referral spam attack, and they actually ranked well when you did a Google query for these sites. Apparently, this annoyed someone in the referral spam world, as they mounted a negative search engine optimization (SEO) attack against my site. They put a couple of hundred spammy links out on a couple of web sites that have a low reputation and which have probably gotten manual penalties from Google. I honestly have not been paying attention to SEO for a while, and did not notice it for several months. In any case, it looks like Google’s algorithms are in fact pretty good at detecting negative SEO, because my site has not experienced a drop-off in search traffic that I cannot attribute to not putting new content out on a regular basis and a falloff in searches for the keywords that drive traffic to particular articles.
What Is a Negative SEO Attack?
A negative SEO attack is the process of trying to lower the Google ranking of a web site or a web page. Usually, this is done by putting a lot of low-quality links to the victim’s page in places that Google will penalize. Marie Haynes has a great Moz article negative SEO attacks and what to do; I won’t rehash it here, but I will show you what it looked like for my site.
What Does a Negative SEO Attack Look Like?
I recognized the attack because recognizing and recovering from a negative SEO attack was discussed at one of the Dallas Interactive Marketing & Internet SEO/SEM Meetup that I attended on Keeping Google’s Fluffy Animals (and their Algorithmic friends) From Your Door.
Google Search Console is the place where you will see the attack when you look at the listing of links to your site. Figure 1 shows some of the links aimed at my site; how did I attribute these to a Negative SEO attack? First, all of the links in Figure 1 are all images copied from various web sites with links back to my site and the site itself appears to be aimed at people who mistype “blogspot” and instead type “blogqpot” for the URL. TCPIPutils.com shows private ownership, that the domain was in September, 2016, and that it expired on September 15, 2017.
The other site contained links that appeared to be machine generated blog posts that combined several blocks of standard text in different combinations, but with identical link text for all of the links to my site. The domain was private, but redirected to a domain that is registered in Egypt. The links to my site did not make sense, especially in the jumbled context of the “articles.”
One of the links to my site actually appears to be a blog where attackers are discussing sites that have posted articles about referral spam.
None of the spam links generate actual traffic to my site.
Google Link Disavow Tool
Google Search Console has a tool through which you can disavow links. Use it wisely, as you could accidentally tank your ranking if you disavow a really good link. Before disavowing links, I made sure that I did not get any traffic from any of the spam links. In Google Search Console, I exported all of the links that I wanted to disavow–about 15 files and then concatenated them with
cat *.csv google_disavow_2017-09-27.txt
and then manually removed the “Link” headers embedded in the file. Next, I uploaded the list to the Disavow Link Tool in Google Search Console. Figure 2 shows the Disavow Link Tool, while Figure 3 shows the results of a successful submission.
Keeping up with Google Search Console backlinks should be at least a weekly part of your site maintenance work.
- Written by Bruce Moore
- Hits: 1588
Test Your Template and Framework Before Upgrading to Joomla 3.8
Joomla 3.8 was released a few days ago and offers a number of improvements, but it is primarily a release to give extension developers tools that they need to prepare for some changes in PHP. It has a couple of security fixes, but they probably do not apply to the way many webmasters have configured their sites. You need to move to 3.8, but you do not need to move today.
Moving three sites from 3.7.5 to 3.8 was uneventful, but it is clear that the changes in 3.8 will require testing for templates and the frameworks upon which they depend. All of my sites upgraded without issue, but I had to update one template’s framework and another template suddenly started working properly in one area. My experience for upgrading the three sites and my recommendations for migration follow.
Recommendations for Upgrading to Joomla 3.8
- More than previous releases, you need to do some research and testing for templates and their underlying frameworks before upgrading a production site. Two of my three sites had recent upgrades to their underlying framework, and the third site is Protostar-based which probably got upgrades as part of Joomla 3.8.
- Do not put testing for this upgrade off indefinitely. There are changes to the router that generates URLs and changes to prepare for upcoming PHP encryption support changes. Some extensions and templates will break in the future, and you probably want to learn about problems now rather than at a point when you absolutely need to upgrade immediately for security patch reasons.
- Read about this release. The router/URL generator and encryption changes will require some planning. The compatibility mode for the router works just like it always has but you will probably want to change to the new mode in the future, but this will require planning.
- If your ISP offers PHP 7.2, do not upgrade to 7.2 at this time. Akeeba Backup and Akeeba Admin Tools only support PHP 7.1, and they do not work on 7.2. I tried. That said, PHP 7.2 appears to offer signficant performance improvements over 7.1, so I plan to move as soon as Akeeba supports 7.2.
Upgrading ProtoStar-based Site
My Protostar site upgraded with no changes in behavior or problems.
Upgrading Rocket Theme Afterburner2 Site
My RocketTheme written Afterburner2 template site got an upgrade to the Gantry framework upgrade a couple of weeks ago, but did not change behavior at that time. When I upgraded to Joomla 3.8, the most recent article that was supposed to show up above a static page started working correctly for the first time ever. It always worked for https://hillcresttm.org/home but this is the first time that it started working properly for https://hillcresttm.org/.
For me, I always considered the previous behavior broken, but any change in behavior is something that means you need to test.
Upgrading a Shape5 Forte Site
My Shape5 written Forte template site upgraded with no error messages, but menus did not appear on when displayed in a desktop browser. Menus worked fine in mobile browsers, just not desktop browsers. An examination of the template showed an available upgrade to the Vertex framework upon which Forte is based. Upgrading from Vertex 4.1 to 4.2 fixed the menu display problem.
The old Joomla router had a defect where it would generate multiple URLs with a
canonical attribute, a big no-no for search engine optimization (SEO). sh404SEF and other Joomla extensions provided alternative routers that fixed this problem. As you upgrade to Joomla 3.8 and various extension developers upgrade to support the new router, you will need to test for compatibility if you have used an alternative router. In particular, I found a problem where the OSMap site-map plugin fails to generate a usable URL when set up with sh404SEF as the router, but works fine with the Joomla router. The old non-search engine friendly (SEF) URLs that I have registered with Google still work fine.
If you use sh404SEF and have problems with a particular component, you can try using other routers for that component by specifying the router for that component within sh404SEF, as shown in Figure 2, the dialog for sh404SEF->Configuration->By Component.
Other New Features to Enable
The default session handler uses the database for your Joomla site, but the PHP handler can be noticeably faster. To enable it, go to Global Configuration and change the settings as shown in Figure 2.
Joomla 3.8 is an important upgrade, but it is not an urgent upgrade. You should spend some time testing your template before upgrading your production site.
- Written by Bruce Moore
- Hits: 1738
UseR! 2017 Recap
I recently returned from a week at the UseR! 2017 conference in Brussels, which was a great opportunity to catch up on the latest trends in the R world. This conference was noticeably different from the 2015 Aalborg conference in the demographics of the audience; in prior conferences, the attendees were overwhelmingly either PhD faculty or PhD candidates but at this conference many if not the majority were consultants and practitioners from industry. There is a lot to cover, so I’ll split things into a few categories:
- Natural Language Processing
- A Tidal Wave of Mapping
- Shiny Stuff
- Docker Was Common
- Mixed Integer Programming
- Parallel Processing
- Making Web Sites Accessible to the Blind
- Written by Bruce Moore
- Hits: 2254
Adding Structured Data to Your JEvents Calendar Entries
Search engine optimization (SEO) is an important part of any website’s design. Structured data is an important part of a basic SEO program, but unfortunately, many Joomla extensions are well behind the state of the art when it comes to implementing structured data, even though Joomla itself has made great strides in recent releases.
Calendar plugins are an important part of most web sites, and Schema.org implements a very rich Event tag should be implemented by all calendar plugins. Many do not implement it, including the JEvents extension.
The article that follows describes how to use the custom template feature in JEvents to add structured data to your calendar.
HTML Implementation of Event Tag Structured Data for JEvents Event Detail
Because of the difficulties in script authorization, I have chosen an implementation that does not use scripting, but instead uses HTML microdata. It is harder to read and is more cumbersome but does not require special permissions management.
To add the structured data, go to the “Custom Layouts” section and select the “Event Detail Page” entry. Add the highlighted tags to you entry and publish the page.
Testing Your Structured Data Markup
To test your structured data markup, use the Google Structured Data Testing Tool
Adding Event-specific Structured Data
JEvents (at least the free version) does not allow you to specify offers or many of the other Event tags that Google recommends. You add them as a part of the event detail with some additional work, as shown in the code listed in Figures 2, 3 and 4.
To see how this is interpreted by Google, look at the results from the Structured Data Testing Tool.
- Written by Bruce Moore
- Hits: 1963
Health Insurance for Small Consulting Firms
Before quitting my job to start this business, I spoke with several self-employed people to get their advice. Without exception, their first question was “how are you going to get health insurance?” I told them that Kristin planned to keep working and that we would get health insurance through her employer until the Affordable Care Act (ACA) kicked in and we could get insurance on the private market. Like almost everyone over the age of 40, I have pre-existing conditions that would have prevented me from getting health insurance prior to the passage of the ACA; I am healthy enough to ride a bicycle across the United States, but not healthy enough to get health insurance prior to the ACA.
For all of the problems that the federal exchange has had, the exchange makes it possible (if not necessarily easy) to compare insurance prices in different locations. To compare costs for different locations, go to Healthcare.gov under the “Get Answers” section for “Where can I find 2017 Marketplace plans and prices?”
Figure 1 shows a summary of the costs and availability of plans for a zip code.
If you collect information from several zip codes, you can start to compare insurance costs as shown in Table 1. Bronze plans are expected to cover 60% of expected costs, Silver 70%, Gold 80% and Platinum 90% (See Minnesota Rate Release Packet).
The only conclusion one can draw from the small data set shown in Table 1 and Figure 2 is that price and number of policies available are related. The number of policies available is largely a proxy for the number of insurers in the market. Whether competition is the cause for lower insurance prices, or more competition is the effect or less expensive and more readily available delivery cannot be determined from this data set.
Table 1. Comparison of Average Health Insurance Costs and Availability on Healthcare.gov. Retrieved July 13, 2017.|
Costs for people who are near 65 would be about 1.5-2 times higher while costs for those near 18 would be about 1/2 the costs shown here.
|2906||Providence||Rhode Island||NA ~ $NA||NA ~ $NA||NA ~ $NA||Industrial|
|23173||Richmond||Virginia||14 ~ $264||15 ~ $308||3 ~ $406||Industrial|
|29342||Gaffney||South Carolina||5 ~ $336||15 ~ $382||5 ~ $472||Small City|
|43612||Toledo||Ohio||19 ~ $275||34 ~ $303||9 ~ $361||Industrial|
|48109||Ann Arbor||Michigan||23 ~ $280||30 ~ $362||6 ~ $466||1 ~ $506||Industrial|
|48236||Detroit||Michigan||32 ~ $239||41 ~ $312||9 ~ $388||1 ~ $474||Industrial|
|48501||Flint||Michigan||26 ~ $239||35 ~ $311||7 ~ $401||1 ~ $477||Industrial|
|49770||Petosky||Michigan||13 ~ $249||22 ~ $317||5 ~ $447||1 ~ $510||Small City|
|55082||Stillwater||Minnesota||NA ~ $NA||NA ~ $NA||NA ~ $NA||Downwind|
|55374||Rogers||Minnesota||NA ~ $NA||NA ~ $NA||NA ~ $NA||Upwind|
|55447||Minneapolis||Minnesota||NA ~ $NA||NA ~ $NA||NA ~ $NA||Industrial|
|59808||Missoula||Montana||10 ~ $381||8 ~ $474||6 ~ $593||Small City|
|59937||Whitefish||Michigan||5 ~ $429||4 ~ $514||3 ~ $610||Small City|
|60613||Chicago||Illinois||11 ~ $333||21 ~ $353||6 ~ $454||Industrial|
|61820||Champaign||Illinois||4 ~ $396||4 ~ $489||1 ~ $579||Small City|
|75019||Coppell||Texas||8 ~ $328||18 ~ $359||6 ~ $461||Downwind|
|75167||Waxahachie||Texas||5 ~ $361||5 ~ $466||3 ~ $560||Upwind|
|76201||Denton||Texas||7 ~ $342||15 ~ $377||4 ~ $527||Downwind|
|77840||College Station||Texas||5 ~ $352||5 ~ $453||5 ~ $545||Small City|
|97035||Portland||Oregon||14 ~ $279||14 ~ $347||9 ~ $415||Industrial|