在XAMPP中使用.htaccess local重写URL

时间:2012-06-28 11:49:36

标签: .htaccess mod-rewrite url-rewriting xampp

我的.htacces以

开头
   RewriteEngine on
   RewriteBase /

(我也试过没有RewriteBase ......)

我尝试了以下所有重写规则来重写网址

的index.php?页=消息

/博客

  • RewriteRule ^ /?([ - 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

...进入:博客/发布/ 9-Beastie-Boys-III

我迷路了。希望你能帮帮我。

3 个答案:

答案 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