我的.htacces以
开头 RewriteEngine on
RewriteBase /
(我也试过没有RewriteBase ......)
我尝试了以下所有重写规则来重写网址
的index.php?页=消息
到
/博客
没有任何作用 - 没有错误。 Mod_rewrite已安装并正常工作。每当我在.htaccess中更改内容时,我就重新启动了Apache和MySQL。
我还想更改我的网址,如下所示...... index.php?page = single_news& category = release& id = 9& headline = Beastie%20Boys%20III
...进入:博客/发布/ 9-Beastie-Boys-III
我迷路了。希望你能帮帮我。
答案 0 :(得分:2)
首先,将.htaccess和其他文件(整个项目)上传到一些正常运行的托管服务器。并检查,如果你的重写在那里工作正常。如果这是.htaccess或XAMPP本身的问题,这将告诉您。在XAMPP下本地使用.htaccess时出现了很多奇怪的问题,在将文件上传到Internet主机后,这些问题神奇地消失了。
例如,我没有在本地使用.htaccess进行工作自动化,因为在我提供正确的登录名和密码后,我看到了与您提到的完全相同的错误消息。至于我,我更确定这个问题纯粹与XAMPP对.htaccess的错误解释有关(因为一切都像生产服务器上的魅力一样),而不是.htaccess内容中的一些错误。
我浪费了太多时间寻找解决方案而离开了它。目前,如果我在本地开发,我将“.htaccess”重命名为“htaccess”,因此它被XAMPP(Apache on-board)忽略,只有在将文件迁移到生产服务器时才重新启用它。这种方法可能不专业,但它为我节省了大量的时间和压力! :
另一方面,如果您的托管也因相同的症状而失败,那么您就会知道,这不是XAMPP相关的问题,而且您的语法有问题。
请查看here以了解StackOverflow.com上报告的类似问题,其中(我认为)原因与您的问题相同。
答案 1 :(得分: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
答案 2 :(得分:1)
关于第一个问题,请尝试以下方法:
RewriteEngine on
RewriteRule ^/blog$ /index.php?page=news