我一直在琢磨了很长一段时间人们是如何设法让他们的网址没有文件扩展诸如“的.html”或“.apsx”上工作进行到底。
看看这个网站,例如:
http://www.axongarside.com/Communication
http://www.axongarside.com/Communication/Compleat
http://www.axongarside.com/Brand
http://www.axongarside.com/Brand/K3-Group
他们是如何做到了这一点? 我能想到的唯一方法是为每一个页面一个新的目录,并在每个目录索引页,但是这将是一个更大的网站巨大的麻烦。 有没有其他办法?
谢谢
最常见的三种方式是:
- 使用索引页(即只需要创建一个目录,并把一个
index.html
文件,在里面)。 - 使用重写引擎(如Apache的mod_rewrite的 )的网址,到不同的文件(这是在PHP-土地的通用方法)地图。
- 使用前端控制器脚本,它处理你的URL(这是MVC框架中通常的做法)。
后一种方法会使用这样的事情在Apache服务器的配置:
WSGIDaemonProcess example processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup example
WSGIScriptAlias / /hosts/example.com/application/wsgi.py
要么
SetHandler fcgid-script
Alias / /hosts/example/application.fcgi/
对于使用WSGI(Python)或FastCGI的脚本分别为(跨语言,特定的例子是从一个Perl的应用程序,我写那儿剽窃)。
该URL格式将通过脚本本身进行处理,不同的结构都采用不同的方法的问题。
在催化剂,这是通过提供属性子例程名称 。
舞者都有自己的路由处理语法 。
网::简单使用子程序原型 。
Django使用含有模式列表一个单独的文件 。
如果您使用的是Apache,你可以使用.htaccess文件删除.html扩展名,如下所示:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
要删除网址.html扩展名只是链接到页面而不html的
<a href="http://www.mysite.com/page">linkhere</a>
如果您正在使用Apache HTTP服务器,你应该检查mod_rewrite的能力。 IIS也有类似的URL重写功能。