URL文件夹层次结构使用.htaccess文件中的mod_rewrite更改

时间:2012-04-07 04:14:31

标签: php css apache .htaccess

我用php制作了一个网站,我在我的htdocs文件夹中写了.htacess文件:

RewriteEngine on 
RewriteBase /

RewriteRule ^([a-zA-Z0-9]+)/?$ ?mainquery=$1 [QSA]

RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ ?mainquery=$1&subquery=$2 [QSA]


我的目的是重定向网址:

  

'/ A / B'=> '/ mainquery = A&安培;子查询= B'。

如果主要查询是一个,一切正常 但是当url有两个查询时,php工作正常,但文件夹层次结构会移动,所以每个带有相对url的图像和css文件都不起作用。

它工作正常

  

(我正在MAMP上构建我的网站,所以域名现在是localhost。)

     

'localhost / publications / articles'=> '本地主机/ mainquery =出版物&安培;子查询=篇'

但是html认为主网址是'localhost / publications',而不仅仅是'localhost /'

所以每个img标签都有src属性,如

  

img src ='images / myImage.jpg'

不起作用,因为html认为图像在'localhost / publications / images /'中,而不是'localhost / images /'

css文件也是如此。

我把头发拉了3天,但我自己也解决不了。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

更改此行:

RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ ?mainquery=$1&subquery=$2 [QSA]

对此:

RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ /?mainquery=$1&subquery=$2 [QSA]

重写的规则需要是root-relative,否则它将相对于请求的URL,它已经在子文件夹中。

认为这就是你所要求的。如果您只是询问如何指向images / css / js root-relative,请更改:

<img src="images/myImage.jpg" />

对此:

<img src="/images/myImage.jpg" />