.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 文件、php、包括目录和 windows XAMPP 配置噩梦