如何在 Windows 的 XAMPP 中配置 .htaccess?

Posted

技术标签:

【中文标题】如何在 Windows 的 XAMPP 中配置 .htaccess?【英文标题】:How to configure .htaccess in XAMPP for windows? 【发布时间】:2014-12-10 18:37:19 【问题描述】:

我不能让这个 .htaccess 在 XAMP 3.2.1 for Windows 上工作。它适用于我老板的 Mac 版 MAMPRO 和我们客户的 Linux 版 Apache。

我收到此错误:

Access forbidden!

You don't have permission to access the requested directory. There is either no index document or the directory is read-protected.

If you think this is a server error, please contact the webmaster.

Error 403

www.rapsodia.loc
Apache/2.4.7 (Win32) OpenSSL/1.0.1e php/5.5.9

这是完整的文件

RewriteEngine On

RewriteCond %HTTP_HOST .*\.ar/?$
RewriteRule ^(.*)$ http://www.rapsodia.loc/ar/$1 [R=301,L]

RewriteCond %HTTP_HOST .*\.cl/?$
RewriteRule ^(.*)$ http://www.rapsodia.loc/cl/$1 [R=301,L]

RewriteCond %HTTP_HOST .*\.uy/?$
RewriteRule ^(.*)$ http://www.rapsodia.loc/uy/$1 [R=301,L]

RewriteCond %HTTP_HOST .*\.br/?$
RewriteRule ^(.*)$ http://www.rapsodia.loc/br/$1 [R=301,L]

RewriteCond %HTTP_HOST .*\.mx/?$
RewriteRule ^(.*)$ http://www.rapsodia.loc/mx/$1 [R=301,L]

RewriteCond %HTTP_HOST .*\.co/?$
RewriteRule ^(.*)$ http://www.rapsodia.loc/co/$1 [R=301,L]

RewriteCond %HTTP_HOST .*\.ve/?$
RewriteRule ^(.*)$ http://www.rapsodia.loc/ve/$1 [R=301,L]

#####Si no es .com. a /ar#####
RewriteCond %HTTP_HOST !^rapsodia.loc.$ [NC]
RewriteRule ^$ http://www.rapsodia.loc/ar/$1 [R=301,L]
##############################

RewriteCond %REQUEST_URI ^/(uy|ar|cl|ve|mx|co|br)$
RewriteRule ^(.*)$ http://%HTTP_HOST/$1/ [R=301,L]

RewriteCond %THE_REQUEST ^GET\ /ar/ [OR] %THE_REQUEST ^POST\ /ar/
RewriteRule ^ar/(.*)$ %DOCUMENT_ROOT/v15/$1 [L]

RewriteCond %THE_REQUEST ^GET\ /uy/ [OR] %THE_REQUEST ^POST\ /uy/
RewriteRule ^uy/(.*)$ %DOCUMENT_ROOT/v15/$1 [L]

RewriteCond %THE_REQUEST ^GET\ /cl/ [OR] %THE_REQUEST ^POST\ /cl/
RewriteRule ^cl/(.*)$ %DOCUMENT_ROOT/v15/$1 [L]

RewriteCond %THE_REQUEST ^GET\ /br/ [OR] %THE_REQUEST ^POST\ /br/
RewriteRule ^br/(.*)$ %DOCUMENT_ROOT/v15/$1 [L]

我可以确认我的 Windows 主机文件和 XAMPP 的 httpvhosts 文件配置正确,因为我的其他虚拟主机工作正常。

我们进行了几次测试,显然这不起作用:RewriteRule ^ar/(.*)$ %DOCUMENT_ROOT/v15/$1 [L]。问题源于我们必须将例如 www.rapsodia.local.ar 重写为 www.rapsodia.local/ar/ 以使我们的网站正常工作。显然 Apache 试图在 vhost 的路由中找到 /ar/ 目录,当它没有找到它时(因为它只是一个 url 重写),它会抛出一个错误。

我们将不胜感激。

【问题讨论】:

http://www.rapsodia.loc/(在.htaccess中提到)还是http://www.rapsodia.local(在上面的评论中提到)? rapsodia.loc ,对不起,我想清楚,它总是 .loc 【参考方案1】:

我改变了这些规则

RewriteRule ^ar/(.*)$ %DOCUMENT_ROOT/v15/$1 [L]

RewriteRule ^ar/(.*)$ /v15/$1 [L]

现在它工作得很好。出于某种原因,%DOCUMENT_ROOT 是我的问题的根源。

谢谢!!!

【讨论】:

以上是关于如何在 Windows 的 XAMPP 中配置 .htaccess?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用预安装的 MySQL 配置 XAMPP?

如何在 XAMPP(Windows)上设置 Apache 虚拟主机 [关闭]

如何在 Xampp 安装的 Windows 上禁用 Apache 中的 SSLv3

markdown 在XAMPP for Windows中配置SSL的指南

如何在XAMPP上创建虚拟主机

如何在 Windows 中自动启动 XAMPP 和 Laravel 项目