.htaccess 在 xampp 和 Ubuntu 下不起作用

Posted

技术标签:

【中文标题】.htaccess 在 xampp 和 Ubuntu 下不起作用【英文标题】:.htaccess is not working under xampp and Ubuntu 【发布时间】:2013-12-13 12:14:23 【问题描述】:

我正在尝试使用不起作用的 .htaccess 进行 url 重写。我在 Ubuntu Linux 机器上安装了 xampp。这是我的 .htaccess 文件:

    Options +FollowSymLinks

    #From: host/1/products/productname/30/
    #To: host/1/index.php?product=productname&price=30
    RewriteEngine On
    RewriteRule ^1/products/([a-zA-Z]+)/([0-9]+)/$ 1/index.php?product=$1&price=$2

代码中的注释行显示了我正在尝试做的事情。我知道正在读取 .htaccess,因为如果我取消注释上面的“发件人”行,它会引发 500 服务器错误。否则,我会收到 404 Object not found 错误。我在 httpd.conf 中设置了 AllowOverride All 并重新启动了 apache。 error_log 没有报告错误。

有什么想法吗?

这是我截至 12 月 2 日下午 2:05 的 .htaccess

Options +FollowSymLinks

#From: host/1/products/productname/30/
#To: host/1/index.php?product=productname&price=30
RewriteEngine On
RewriteRule ^1/products/([a-zA-Z]+)/([0-9]+)/$ 1/index.php?product=$1&price=$2
RewriteRule ^foo$ /bar`

【问题讨论】:

当您在浏览器中访问/1/index.php?product=productname&price=30 时会发生什么? 当我访问localhost/1/index.php?product=productname&price=30时,页面样式正确 是否启用了 mod_rewrite?系统中还有其他的.htaccess吗? LoadModule rewrite_module modules/mod_rewrite.so 未注释且 AllowOverride 设置为 All 创建一个简单的规则:RewriteRule ^foo$ /bar [L,R] 并在浏览器中打开/foo。看看它是否重定向到/bar 【参考方案1】:

在您的 DOCUMENT_ROOT/.htaccess 文件中使用此规则:

RewriteEngine On

RewriteRule ^1/products/([^/]+)/([^/]+)/?$ /1/index.php?product=$1&price=$2 [L,QSA,NC] 

对于 css/js/images: 在您的 css、js、图像文件中使用绝对路径而不是相对路径。这意味着您必须确保这些文件的路径以 http:// 或斜杠 / 开头。

或者你可以尝试在你的页面标题中添加这个:

<base href="/" />

解析所有相关资源链接。

【讨论】:

以上是关于.htaccess 在 xampp 和 Ubuntu 下不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 的 XAMPP 中配置 .htaccess?

XAMPP/Apache 文件夹中的 .htaccess 未找到错误 404

.htaccess 无法使用 XAMPP 在本地主机上工作

htaccess 文件、php、包括目录和 windows XAMPP 配置噩梦

.htaccess 在 xampp (ubuntu) 中不起作用

在 xampp 的 phpmyadmin 中添加 htaccess 文件