【问题标题】:map static website to new URL but use the same files?将静态网站映射到新 URL 但使用相同的文件?
【发布时间】:2016-12-17 13:20:05
【问题描述】:

我有一个静态网站,说它的 URL 是:

http://website.com

及其文件路径:

/path/to/website/

我想将此目录中的相同文件/文件夹提供到一个新目录中,并在其文件末尾添加一个 css 文件<head>;

所以,为了在新样式上显示它,我希望它的 URL 是这样的:

http://website.com/new-style/1/
http://website.com/new-style/2/
http://website.com/new-style/3/
....

以及它的 html/css/js 文件将从原始目录提供:

/path/to/website/
+
/path/to/website/new-style/1/style.css
                 ^--------------------
/path/to/website/new-style/2/style.css
/path/to/website/new-style/3/style.css

我该怎么做?

需要服务器端重写还是什么的?

我可以使用 PHP 和 Apache 作为网络服务器。

【问题讨论】:

  • 你的问题不是很清楚。您想将目录中的相同文件/文件夹提供给新目录是什么意思?
  • 我的意思是我不想将 HTML 文件复制/粘贴到一个新目录中,我想在任何地方使用它一次,因为我以后可能会编辑它们。所以,我不想再编辑它们了!
  • 哦,我想我明白了。您希望为 3 个 URL 中的每一个以 3 种不同样式(使用 css)查看相同的静态网站。你说的是静态的,但如果你使用 apache 就意味着你使用的是 php 对吗?
  • 好的,它们必须是 HTML 文件吗?如果你在<head> 中加入一行PHP 并使用mod_rewrite,这很容易解决......
  • 已经是 HTML 文件了。我主要关心的是在文件末尾使用.html 扩展名!为了保持搜索引擎优化,你知道

标签: php html url-rewriting


【解决方案1】:

使用 PHP 文件而不是 HTML

//index.php
<html>
<link rel="stylesheet" type="text/css" href="css/style<?php print $_GET['style'];?>">
...
</head>
<body>
...

然后在你的 .htaccess 中

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /path/to/website/

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^new-style/([0-9]+)/(.*)\.html$ /$2\.php?style=$1 [QSA,L]
</IfModule>

最后一行将 html 扩展名重命名为 PHP

EDIT(因为它可能不是很清楚):最后一行并没有真正重命名地址中的html页面,它只是解释它们为PHP。

【讨论】:

  • 非常感谢托尼!
  • 但如果我使用了 .php 扩展,我需要将它们重写为 .html ,而不是相反!
  • 什么意思?您使用 .php 以便 1 行代码有效,然后使用 .htaccess 文件“假装”它们是 .html 文件。
  • 对不起,我不确定我是否理解您的意思...那么,网址是什么?
  • www.yourwebsite.com/index.html ---TRANSLATED TO--> www.yourwebsite.com/index.php 用户写 index.html 而你的服务器读 index.php
猜你喜欢
  • 2015-03-24
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 2020-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多