mod_rewrite参数作为目录并维护相对URL

时间:2018-07-12 03:07:45

标签: apache mod-rewrite url-rewriting

我有以下php文件:

http://example.com/details.php?item=asdf

但是,我希望网址更简洁:

http://example.com/item/asdf/details

我尝试像这样使用.htaccess文件:

RewriteEngine on
RewriteRule ^item/(\w+)/details$ details.php?item=$1

URL重写有效。

但是,当我尝试从main.css加载位于http://example.com的{​​{1}}时,我从Chrome收到以下消息:

details.php

因为找不到Failed to load resource: the server responded with a status of 404 (Not Found)

是否可以将原始网址的“基本”或“根”目录与重写的网址一起使用?我想从动态生成的http://example.com/asdf/main.css“目录”访问main.css。我不想在html中使用asdf标签,因为这看起来很混乱,或者因为我使用的是模板页面,所以不指向父目录。

我尝试过base,但这只会造成另一个错误。有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

如果文件不存在,请尝试以下操作,如果文件不存在,它将被重写,默认情况下将起作用。

RewriteEngine on
RewriteBase /item/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^item/(\w+)/details$ details.php?item=$1 [L]

答案 1 :(得分:0)

我决定走<base>路线,但是我没有使用php来对URL进行硬编码,

<base href="/<?=$_SERVER["HTTP_HOST"]?>">