2

我对网络东西并不感到惊讶,但我有一个正在重新设计的小型投资组合网站。我希望隐藏example.com/page.html并使其成为 website.com/page。

我添加了我在此处为 .htaccess 找到的重写引擎

RewriteEngine On
RewriteRule   ^([A-Za-z0-9-]+)/?$  $1.html

唯一的问题是,当我使用 时RewriteEngine,加载的原始路径/page.html正常,但是当我测试它时,/page/它似乎丢失了样式表,我尝试重新链接样式表.../style.css而不是只是style.css,但仍然是所有图像和样式表似乎不见了。

这可能是非常简单的事情,但我需要一些帮助。

4

3 回答 3

2

我从你的话中了解到,你想让你的网址像: http ://www.example.com/page ok。如果你不必使用 htaccess,你可以这样做来做你想做的事。只需将文件名 (page.html) 更改为 (index.html) 。现在在您的根目录中创建一个新文件夹并将 index.html 移动到那里!如果文件 (page.html) 是您的主页,只需将其名称更改为 index.html 并不要理会它:D!

于 2013-05-08T00:24:07.210 回答
1

您的问题不一定与 RewriteRules 有关,而是与路径有关。通常,您应该始终使用图像和资产的绝对路径。所以不是加载style.cssor ../style.css,而是加载/style.cssor /static/styles/style.css。否则,浏览器会尝试相对于页面位置进行解析,并被/page认为是在根文件夹中,而/page/被认为是它自己的文件夹。

Iow,如果您style.css从页面加载:

  • /page它将加载/style.css
  • /page/它将加载/page/style.css

始终使用绝对路径,为自己省去痛苦和挫折。

除此之外,请确保图像和资产也不会被重写为.html其他答案中提到的扩展。

于 2013-05-08T00:29:48.730 回答
1

你可能不想重写所有可能的扩展,所以你可能想尝试这样的事情:

RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

这应该做的是检查是否存在带有.html扩展名的文件。如果是这样,它应该.html在执行实际“查找”之前透明地附加到路径。因此,如果您发出 HTTP 请求

http://yourdomain.tld/somepage

并且您的网站有一个名为 的 HTML 页面somepage.html,实际处理的 URL 实际上是

http://yourdomain.tld/somepage.html

编辑:

我包含一个独立示例的 Dropbox 链接,该示例显示上述建议有效:https ://www.dropbox.com/s/6md9gviv0r2rf9v/xampp.7z

它包含一个便携式版本的 Xampp + 来自这个相当不错的教程的源文件:http: //coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/

在某处解压 xampp.7z 文件(我推荐桌面),然后找到并执行该setup_xampp.bat文件。它将调整本地文件系统的所有内部路径。然后,运行xampp-control并启动 Apache。一旦运行,导航到http://localhost:8080/testsite/- 这是测试站点。http://localhost:8080/testsite/您应该能够来回弹跳http://localhost:8080/testsite/contact- 两个页面都有.html扩展名。

HTH。

于 2013-05-08T00:13:06.630 回答