Archive for the ‘Apache’ Category

Case Sensitivity in URLs

Wednesday, October 17th, 2007

I am an open source guy - so naturally I prefer the flagship OSS software Apache to the proprietary Microsoft IIS. But there is one area where IIS does a better job than Apache - the case sensitivity of URLs.

Are URLs Case Sensitive?

They should not be - but they sometimes are. Domain names are not case sensitive - for example http://www.apache.org/ and http://WWW.Apache.Org/ goes to the same location. But in the LAMP platform, the path is case sensitive…

But in the case of Microsoft IIS server, this is not true - try…

Reason: Linux Filesystem is Case Sensitive

The root cause of this is that the filesystem in the Linux OS is case sensitive - while FAT32/NTFS filesystems in Windows are not.

Dynamic URLs

Now Dynamic/friendly/clean URLs are appearing in many CMS tools. A good example for this is the ‘permalink structure’ in WordPress. These dynamic URLs could be case sensitive or not - it depends on the software. In WordPress they are case insensitive. Del.icio.us is also case insensitive. TinyURL is another service that uses case insensitive URLs. But it is possible for the tool to make the URLs case sensitive.

From the SEO perspective

If the search bot visits two urls say, example.com/MyWebPage/Index and example.com/mywebpage/index , will the bot index both page contents? If they are same, will one get the duplicate content penalty? Or will google just index the URL with lower case and ignore the other - remember, in Linux/Apache, both pages may have different content.

Conclusion

The RFC for URL says they must be case insensitive.

For resiliency, programs interpreting URLs should treat upper case letters as equivalent to lower case in scheme names (e.g., allow “HTTP” as well as “http”).

Apache must not use the filesystem as an excuse - I really hope they provide case insensitive URLs

Between Web Application and Desktop Applications

Sunday, August 26th, 2007

There is a distinct line between web application and desktop applications. But over the last few years, this line is becoming thinner. Due to faster internet connection and technologies like ajax, web applications are becoming much faster and more responsive. And, if you have a local web server installed, a ‘web’ application can become desktop application.

I have a web server(Apache), and a database server(MySQL) running at all times on my local system. Since LAMP is my preferred platform of development, if I need a new software, I will create it on LAMP. A good example of this is Nexty. Over time, I have discovered that web application can be used as desktop applications. All you need is a web server, a database server and a browser.

There must be some changes to the current model to make this system work. These are a few I could think of…

  • Web Server must run as the current user. That way, you can read/write to any file using PHP(or equivalent).
  • The application must not be available over the network. Or, the web server must only accept connections from 127.0.0.1
  • An installer for these kind of applications must be made.

Advantages

  • Familiarity: People are already used to web applications - so it will be easy to switch.
  • User Customizable: Users can change the appearance of the application(user stylesheets), and to a limited extent, the functionality(GreaseMonkey).
  • Open Source: If the code is in PHP or Ruby on Rails, or anything similar, the code will be available for study or even modification.
  • Cross Platform: The same program can be installed in Windows or Linux or whatever - as long as it has a Web server.

Disadvantages

  • Imaginary: As of yet no such system exists.
  • High Level: The system will not be able to do low level system operations.
  • Limited: There will be some very serious limitation to the application unless the current systems are modified. For example, the browser cannot read or write to the filesystem.

I have been using some web applications as desktop applications for a while now - these include WordPress(for keeping notes), activeCollab(project management), Nexty(to do list), and Tiker(time tracker).

Subscribe to Feed