如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 XAMPP(Windows)上设置 Apache 虚拟主机 [关闭]
如何在 Xampp 安装的 Windows 上禁用 Apache 中的 SSLv3