您需要从Web浏览器的角度思考此问题。
如果URL没有以斜线“/ about”结尾,那么Web浏览器会假定它正在查看Web服务器顶级目录中名为“about”的文件。因此,由“/ about”生成的具有相对路径的页面中的任何请求都将导致Web浏览器根据从顶层目录中的起点生成完整路径。例如,“css/style.css”的CSS文件路径将导致浏览器从顶层开始,并从“/css/style.css”中请求该文件。
但是,如果URL在我们的例子中以斜线“/ about /”结尾,那么Web浏览器认为它正在查看名为“about”的子目录。现在,相同的CSS文件路径“css/style.css”将导致Web浏览器从“/about/css/style.css”中请求该文件。
一个CSS文件路径将是正确的,另一个不会。因此你看到的行为。
有几种方法可以避免这种情况。您可以告诉Apache将所有请求永久重定向到以斜线结尾的URL或不是的URL,以便所有访问者最终都会查看相同的URL。这使得知道在您的网页中使用什么相关的CSS和图像路径成为可能。
或者您可以修改您的网页,以便将CSS,图像,JavaScript等的所有文件路径固定到顶层目录。因此,例如“css/style.css”会变成“/css/style.css”(注意路径起点处的正斜杠,以指示浏览器从顶层目录开始)。
或者您可以添加一堆令人费解的mod_rewrite规则来尝试捕获CSS文件等的所有可能结果。我不赞成这种方法,因为它通常会使您的规则集更加脆弱和复杂。