在 XAMPP 中使用 .htaccess local 重写 URL
Posted
技术标签:
【中文标题】在 XAMPP 中使用 .htaccess local 重写 URL【英文标题】:Rewriting URL with .htaccess local in XAMPP 【发布时间】:2012-06-29 22:24:40 【问题描述】:我的 .htacces 以
开头 RewriteEngine on
RewriteBase /
(我也试过没有 RewriteBase...)
我尝试了以下所有重写规则来重写 URL
index.php?page=news
到
/博客
重写规则 ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/blog$ index.php?page=$1 [L] RewriteRule ^([^/]*)/blog$ /sites/blog/index.php?page=$1 [L] RewriteRule ([a-zA-z]+)/([a-zA-z]+)/blog$ index.php?page=$1 [L]没有任何效果 - 没有错误。 Mod_rewrite 已安装并正在运行。每次更改 .htaccess 中的内容时,我都会重新启动 Apache 和 mysql。
我还想更改如下所示的网址...index.php?page=single_news&category=release&id=9&headline=Beastie%20Boys%20III
...进入:blog/release/9-Beastie-Boys-III
我迷路了。希望你能帮助我。
【问题讨论】:
【参考方案1】:首先,将您的 .htaccess 和其他文件(整个项目)上传到某个工作就绪的托管服务器。并检查,如果你的重写工作正常。这会让你知道,如果这是 .htaccess 或 XAMPP 本身的问题。我在本地使用 .htaccess 时遇到了许多奇怪的问题,在 XAMPP 下,在文件上传到 Internet 托管后神奇地消失了。
例如,我没有在本地使用 .htaccess 进行工作自动化,因为在我提供正确的登录名和密码后,我看到的错误消息与您提到的完全相同。至于我,我非常确定这个问题完全与 XAMPP 对 .htaccess 的错误解释有关(因为一切都像生产服务器上的魅力一样),而不是 .htaccess 内容中的一些错误。
我在寻找解决方案上浪费了(太多)时间并离开了它。目前,如果我在本地开发,我将“.htaccess”重命名为“htaccess”,所以它会被 XAMPP(它的 Apache 板载)忽略并仅在将文件部署到生产服务器时重新启用它。这种方法可能不专业,但它为我节省了很多时间和压力! :]
另一方面,如果您的托管也因同样的症状而失败,那么您就会知道,这不是 XAMPP 相关的问题,而且您的语法有问题。
查看 here 以了解 ***.com 上报告的类似问题,其中(我认为)原因与您的问题相同。
【讨论】:
【参考方案2】:以下是将链接从http://www.domain.tld/index.php?page=blog
更改为http://www.domain.tld/blog
的解决方案是:
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^\w+$ index.php?page=$0 [L]
RewriteCond %THE_REQUEST index\.php
RewriteCond %QUERY_STRING ^page=(\w+)$
RewriteRule ^index\.php$ /%1? [R=301,L]
对于像这样的链接:http://www.domain.tld/index.php?page=single_news&id=1&headline=This%20Is%20A%Headline
解决办法是:
RewriteRule ^blog/(\d+)-([\w-]+)$ index.php?page=single_news&id=$1&headline=$2
使用此代码后,链接如下所示:http://www.domain.tld/blog/2-this-is-a-headline
【讨论】:
【参考方案3】:对于你的第一个问题,试试这个:
RewriteEngine on
RewriteRule ^/blog$ /index.php?page=news
【讨论】:
以上是关于在 XAMPP 中使用 .htaccess local 重写 URL的主要内容,如果未能解决你的问题,请参考以下文章
XAMPP/Apache 文件夹中的 .htaccess 未找到错误 404
在 ubuntu 13.10 上从 XAMPP 移动到 LAMP 后 htaccess 不起作用(在 apache linux 服务器中启用 htaccess)