在XAMPP中使用.htaccess local重写URL

在XAMPP中使用.htaccess local重写URL,.htaccess,mod-rewrite,url-rewriting,xampp,.htaccess,Mod Rewrite,Url Rewriting,Xampp,我的.htacces以开头 RewriteEngine on RewriteBase / (我也试过了,但没有重写基础…) 我尝试了以下所有重写规则来重写URL index.php?page=news 到 /blog 重写规则^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/blog$ php?页面=$1[L] 重写规则^([^/]*)/blog$/sites/blog/index.php?页面=$1[L] 重写规则([a-zA-z]+)/([a-zA-z]+

我的.htacces以开头

   RewriteEngine on
   RewriteBase /
(我也试过了,但没有重写基础…)

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

index.php?page=news

/blog

  • 重写规则^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/blog$ php?页面=$1[L]
  • 重写规则^([^/]*)/blog$/sites/blog/index.php?页面=$1[L]
  • 重写规则([a-zA-z]+)/([a-zA-z]+)/blog$index.php?页面=$1[L]
什么都不管用——没有错误。Mod_rewrite已安装并运行。每次我在.htaccess中更改某些内容时,我都会重新启动Apache和MySQL

我也想改变我的网址,看起来像这样index.php?page=single_news&category=release&id=9&headline=Beastie%20Boys%20III

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


我迷路了。希望您能帮助我。

首先,将您的.htaccess和其他文件(整个项目)上传到某个工作正常的托管服务器。检查一下,你的重写是否正常。如果这是.htaccess或XAMPP本身的问题,这会让您知道。在XAMPP下,我在本地使用.htaccess时遇到了许多奇怪的问题,这些问题在文件上传到Internet主机后神奇地消失了

例如,我没有在本地使用.htaccess进行工作自动化,因为在我提供正确的登录名和密码之后,我看到的错误消息与您提到的完全相同。就我而言,我非常确定这个问题纯粹与XAMPP对.htaccess的错误解释有关(因为在生产服务器上一切都像一个符咒),而不是与.htaccess内容中的一些错误有关

我浪费了(太)多的时间去寻找解决方案,然后就离开了。现在,如果我在本地开发,我会将“.htaccess”重命名为“htaccess”,因此XAMPP(Apache on-board of it)会忽略它,并且只有在将文件解压缩到生产服务器时才重新启用它。这种方法可能并不专业,但它为我节省了很多时间和压力!:]

另一方面,如果您的主机也出现同样的故障症状,那么您就会知道,这不是XAMPP发布的问题,您的语法有问题


查看StackOverflow.com上报告的一个类似问题,其中(我认为)原因与您的问题相同。

首先,将您的.htaccess和其他文件(整个项目)上载到某个工作正常的托管服务器。检查一下,你的重写是否正常。如果这是.htaccess或XAMPP本身的问题,这会让您知道。在XAMPP下,我在本地使用.htaccess时遇到了许多奇怪的问题,这些问题在文件上传到Internet主机后神奇地消失了

例如,我没有在本地使用.htaccess进行工作自动化,因为在我提供正确的登录名和密码之后,我看到的错误消息与您提到的完全相同。就我而言,我非常确定这个问题纯粹与XAMPP对.htaccess的错误解释有关(因为在生产服务器上一切都像一个符咒),而不是与.htaccess内容中的一些错误有关

我浪费了(太)多的时间去寻找解决方案,然后就离开了。现在,如果我在本地开发,我会将“.htaccess”重命名为“htaccess”,因此XAMPP(Apache on-board of it)会忽略它,并且只有在将文件解压缩到生产服务器时才重新启用它。这种方法可能并不专业,但它为我节省了很多时间和压力!:]

另一方面,如果您的主机也出现同样的故障症状,那么您就会知道,这不是XAMPP发布的问题,您的语法有问题


查看StackOverflow.com上报告的类似问题,其中(我认为)原因与您的问题相同。

对于您的第一个问题,请尝试以下方法:

RewriteEngine on
RewriteRule ^/blog$ /index.php?page=news

对于第一个问题,请尝试以下方法:

RewriteEngine on
RewriteRule ^/blog$ /index.php?page=news

以下是从
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

以下是更改
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