1

我想将像这样 http://www.mydomain.com/it/archive.php=321123这样的 URL 转换成 如下 http://www.mydomain.com/it/R/321123 在一本书中我发现了一些有用的东西,我得到了以下内容

RewriteEngine On
RewriteRule ^R/(.*) archive.php?$1 [PT]

哪些工作正常。问题是代码中的任何引用都像

<link rel="stylesheet" type="text/css" href="css/layout.css" />

被转化为

<link rel="stylesheet" type="text/css" href="www.mydomain.com/it/R/css/layout.css" />

R 文件夹在现实中不存在,所以它不包含任何 css 文件,所有 css 文件都存储在文件夹http://www.mydoman.com/it/css中。Chrome 开发人员实用程序给了我以下信息: Resouce 被解释为样式表,但使用 MIME 类型 text/html 传输:“http://www.mydomain.com/it/R/css/style.css”。

可以更改地址,但在页面内部保留与原始页面相同的引用。我可以写

<link rel="stylesheet" type="text/css" href="http://www.mydomain.com/it/css/layout.css" />

但是当我使用 EasyPHP 离线工作时,这应该不起作用。

PS:我想将 .htaccess 文件放入http://www.mydomain.com/it文件夹,这样它只会影响 it 语言部分。

谢谢!

4

2 回答 2

2

您可以将其添加到页面的标题中:

<base href="/it/">

这应该使得相对URI 路径(例如“css/layout.css”)不会与/R/重写混淆。

如果这不可能,您可以尝试添加额外的规则以使 css 工作:

RewriteRule ^R/css/(.*)$ css/$1 [L]
于 2012-06-20T20:35:27.747 回答
0

假设 R/ 之后的部分总是数字,试试这个:

RewriteEngine On
RewriteRule ^R/([0-9]*) archive.php?$1 [PT]
于 2012-06-20T20:34:15.420 回答