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

标签 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]


我的意图是重定向 url:

'/A/B' => '/?mainquery=A&subquery=B'.

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

它工作正常

(I'm building my web on MAMP, so the domain is now 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天,自己解决不了。

我该如何解决这个问题?

最佳答案

改变这一行:

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,它已经在一个子文件夹中。

认为这就是您要问的。如果你只是问如何指向 images/css/js root-relative,改变这个:

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

对此:

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

关于php - 使用 .htaccess 文件中的 mod_rewrite 更改 URL 文件夹层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051680/

相关文章:

php - 如何使用API​​在YouTube上启用“通过广告获利”选项

php - 如何在后台休眠 PHP(Laravel 5.2)

html - 响应式嵌入式 YouTube 视频代码无法正常工作

javascript - 只允许数字的实时输入文本过滤

mysql - 我无法在 mysql 上设置新变量

javascript - Spark Java框架未在tomcat服务器上运行

java - Gzip apache Camel 请求休息

PHP 用 mysql 列的总和填充数组

javascript - 使用 AJAX 或 JS 获取域检查的结果而不是刷新页面

jquery - 这段代码缺少什么?