【问题标题】:URL folder hierarchy changes using mod_rewrite in .htacess file使用 .htaccess 文件中的 mod_rewrite 更改 URL 文件夹层次结构
【发布时间】:2012-04-07 04:14:31
【问题描述】:

我用 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&subquery=B'。

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

效果很好

(我正在 MAMP 上构建我的网站,因此域现在是 localhost。)

'localhost/publications/articles' => 'localhost/?mainquery=publications&subquery=articles'

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

所以每个具有 src 属性的 img 标签都像

img src='images/myImage.jpg'

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

css 文件也是如此。

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

我该如何解决这个问题?

【问题讨论】:

  • 要标记已解决的问题,请单击复选标记以接受下面的答案。不要标记您的问题已解决。

标签: php css apache .htaccess


【解决方案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]

重写的规则必须是相对于根目录的,否则它将是相对于请求的 URL 的,该 URL 已经在一个子文件夹中。

认为这就是你要问的。如果您只是询问如何指向 images/css/js 根目录,请更改:

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

到这里:

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

【讨论】:

  • 天哪,我解决了这个问题,只需在 url 前添加“/”!非常感谢!
  • 如果这个答案对你有用,请“接受”它并投票!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
相关资源
最近更新 更多