很长一段时间以来,我一直想知道人们如何设法让网址在没有文件扩展的情况下工作,例如“.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
他们是如何做到这一点的?我能想到的唯一方法是为每个页面创建一个新目录,并在每个目录中都有一个索引页面,但这对于一个更大的网站来说将是一个巨大的麻烦。还有其他办法吗?
三江源
答案 0 :(得分:4)
最常见的三种方式是:
index.html
文件)。后一种方法会在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格式将由脚本本身处理,不同的框架采用不同的方法解决问题。
在Catalyst中,这是由providing attributes to subroutine names完成的。
Dancer有自己的route handler syntax。
Web :: Simple使用subroutine prototypes。
答案 1 :(得分:2)
如果您使用的是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>
答案 2 :(得分:1)
如果您使用的是Apache HTTP Server,则应检查mod_rewrite 功能。 IIS也有类似的URL重写功能。