.htaccess 友好的 URL 奇怪的行为

Posted

技术标签:

【中文标题】.htaccess 友好的 URL 奇怪的行为【英文标题】:.htaccess friendly URLs weird behavior 【发布时间】:2016-12-27 22:48:40 【问题描述】:

我的服务器上有一个query.php 文件,其位置是ROOT_DIRECTORY/info/query.php

在我在 .htaccess 文件中使用友好的 URL 之前,脚本没有问题。我已经将它们用于许多脚本并且它们工作得非常好,但是当我添加这两行时

RewriteRule info/([a-zA-Z]*)/ info/query.php?slot=$1

RewriteRule info/([a-zA-Z]*) info/query.php?slot=$1

在我的 query.php 文件的 .htaccess 文件中,它给了我以下错误。

资源被解释为样式表,但使用 MIME 类型 text/html 传输:“http://example.com/info/css/reset.css”。

资源被解释为样式表,但使用 MIME 类型 text/html 传输:“http://example.com/info/css/style.css”。

(index):27 Uncaught ReferenceError: $ is not defined

但是,当我删除 .htaccess 文件中的这两行时,没有错误并且我的脚本按预期运行。

可能是什么问题?我做错了什么导致这种意外行为?

谢谢!

如果有人想要 query.php 文件,我也可以上传。请在 cmets 中写入代码。

【问题讨论】:

我的最佳猜测,但这可能无法解决您的问题:重写规则会重写所有文件,包括您的 css 文件,而不仅仅是您的 php 或 html 文件。尝试将其仅限于这些文件。 感谢您告诉我有关此信息,我不知道。如何将其限制为该特定文件? 类似:RewriteRule ^info/(.*)\.php$ info/query.php?slot=$1(未经测试),但最好看一下手册:httpd.apache.org/docs/2.0/misc/rewriteguide.html 谢谢,伙计。它有效,写下答案,我会选择正确的。 哇,我真的没想到。 :-) 【参考方案1】:

问题可能在于您还“重写”了 CSS 文件。所以它们也会被query.php处理。这不是你想要的。

尝试将重写规则仅限于 PHP 文件,如下所示:

RewriteRule ^info/(.*)\.php$ info/query.php?slot=$1

这也适用于所有文件名,即使它们被命名为:this_is_my_file.php

【讨论】:

以上是关于.htaccess 友好的 URL 奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

xampp 上 .htaccess 文件的奇怪行为

友好 URL 的 .htaccess

如何使用 .htaccess 创建友好的 URL?

.htaccess 用于友好的 URL

.htaccess 重写友好的 URL

使用 .htaccess 在 php 中创建友好的 URL [重复]