![htaccess 重写规则前导斜杠](https://linux22.com/image/579641/htaccess%20%E9%87%8D%E5%86%99%E8%A7%84%E5%88%99%E5%89%8D%E5%AF%BC%E6%96%9C%E6%9D%A0.png)
我使用 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
,以及该系统的其他相关配置。