【问题标题】:How to configure .htaccess in XAMPP for windows?如何在 Windows 的 XAMPP 中配置 .htaccess?
【发布时间】: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

标签: apache .htaccess xampp localhost virtualhost


【解决方案1】:

我改变了这些规则

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

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

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

谢谢!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2023-03-20
    • 2016-06-19
    • 2013-12-08
    • 1970-01-01
    • 2014-04-06
    • 2017-11-27
    相关资源
    最近更新 更多