1

我正在使用以下 mod_rewrite 规则:

  **RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
    RewriteRule ^(.*)$ $1.php [L]**

获得干净的网址,例如

  www.myweb.com/login

 www.myweb.com/login.php

我正在使用另一个重写规则

**RewriteRule ^itemdetail/([0-9]+)/?$ itemdetail.php?itemid=$1 [NC,L]**

要得到

 www.myweb.com/itemdetail/100008

 www.myweb.com/itemdetail?itemid=100008.

这工作正常,但有一个问题。此重写规则在每个链接上添加一个子域。例如。如果到 css 文件的链接是 text.css 现在到这个 css 文件的链接是 itemdetail/text.css。主页链接现在是 www.myweb.com/itemdetail/home 而不是 www.myweb.com/home。我在这里做错了什么。请帮忙。

4

1 回答 1

0

此重写规则在每个链接上添加一个子域。例如。如果到 css 文件的链接是 text.css 现在到这个 css 文件的链接是 itemdetail/text.css。主页链接现在是 www.myweb.com/itemdetail/home 而不是 www.myweb.com/home。我在这里做错了什么。

您可以执行以下两种操作之一来处理此问题,或者将其添加到itemdetail.php页面标题(在<head> </head>标签内):

<base href="/">

或者,您可以通过添加前导将您的 css 链接从相对 URL 更改为绝对 URL /,例如:

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

否则,您可以尝试添加重写规则来取消写入 css 链接,但这通常是一个非常糟糕的主意,因为当您有意使用子目录时,它会破坏子目录中的 css:

RewriteRule ^itemdetail/(.*?)\.css$ /$1.css [L]
于 2012-09-17T22:50:52.823 回答