【问题标题】:Style Sheets and hiding .html extension样式表和隐藏 .html 扩展名
【发布时间】:2013-05-02 01:59:18
【问题描述】:

我对网络东西并不陌生,但我有一个小型投资组合网站,我正在重新设计。我希望隐藏 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,但所有图像和样式表似乎都丢失了。

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

【问题讨论】:

  • 您正在捕获所有扩展名,而不仅仅是.html。我应该在这里的某个地方有更好的规则。
  • 我想添加一些有问题的东西,如果我使用 php 文件怎么办?我可以将变量传递给没有 .php 的文件吗?
  • @user2207792 您需要提出一个新的、单独的问题,并提供一些您想要完成的任务的背景信息。

标签: html css .htaccess hide


【解决方案1】:

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

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

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

http://yourdomain.tld/somepage

如果您的网站有一个名为 somepage.html 的 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。

【讨论】:

  • 我试过这样做,但似乎没有用。我已经尝试了另一个用户建议映射到 /foldername/index.html 所以我的 url 将是 awstorer.com/portfolio/ 而不是 awstorer.com/portfolio.html 这样工作有什么缺点吗?我想这可能有点乱,但我的网站没有数百页,所以应该没问题?
  • @A.W.S 它有效,但我不喜欢这个过程——它并不能真正解决问题。尝试排除简单路径问题的一件事是您是否可以直接请求 CSS 文件/图像;例如,yourdomain.tld/path/to/yourcssfile.css 是否返回您的 CSS 文件的内容?
  • awstorer.com/style.css 是我的 css 文件。我想我从不使用实时链接,因为我通常在本地构建站点;没有住。我应该在 .htaccess 中使用的完整代码是什么?只是您发布的请求和重写?
  • 您还需要离开RewriteEngine On,但是是的,应该就是您所需要的。不过,平心而论,这些天我主要使用 IIS 和 ASP.NET MVC,所以我的 mod_rewrite 有点生疏......
  • @A.W.S 我正在 XAMPP 便携版中构建示例站点。当我有更好的答案时,我会告诉你。
【解决方案2】:

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

【讨论】:

  • 我想知道这样工作有什么缺点吗?我从来没有想过这样做,但它似乎工作。显然不是很好的内容/文件管理。但结果更容易。
  • 我将这种技术用于我的网站!而且没有优势或劣势!甚至这种方式更好。因为某些服务器不允许用户使用 .htaccess 。祝你好运......
【解决方案3】:

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

如果你从你的页面加载style.css

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

始终使用绝对路径,免去痛苦和挫折。

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

【讨论】:

    猜你喜欢
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2017-09-24
    相关资源
    最近更新 更多