htaccess 重写规则前导斜杠

htaccess 重写规则前导斜杠

我使用 htaccess 重写我的 URL,这样我就可以拥有干净整洁的 URL。但是,同一个 htaccess 文件在我的本地服务器和远程服务器上执行的操作不同:

在我的本地服务器上,该网站的 URL 是这样的http://localhost/example/,而在我的远程服务器上,该网站的 URL 是这样的http://example.com/

对于我的本地服务器,我可以使用以下 htaccess 重定向规则:

RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

但是,当我在远程服务器上使用它时,我收到内部服务器错误。我不得不使用这个:(注意前导斜杠)

RewriteRule ^(.*)$ /index.php?page=$1 [L,QSA]

不幸的是,这在我的本地服务器上不起作用:这个重写规则请求http://localhost/index.php不是http://localhost/example/index.php在我的本地服务器上。

我如何才能让它在我的远程服务器和本地服务器上工作?

答案1

最好的解决方案是更改您DocumentRoot的开发服务器,以便 URI(以及所有重写)与生产服务器相同。

如果您的开发服务器上有多个站点,并且您当前将它们保存在单独的文件夹中,则可以为它们使用单​​独的子域。

答案2

该指令在任何目录上下文中都可以正常工作。

当它以 响应时,请提供其日志中的错误500 Internal Server Error,以及该系统的其他相关配置。

相关内容