【问题标题】:Apache URL Rewrite for Subdomain子域的 Apache URL 重写
【发布时间】:2014-01-17 18:29:48
【问题描述】:

我正在努力实现以下目标:

subdomain.domain.com/some/path 发出的HTTP 请求应重写为domain.com/subdomain/api.php?__route__=some/path

这是 Epiphany 库正常运行和正确处理 RESTful API 调用的要求。我的网站目前托管在 GoDaddy 上,我已使用 GoDaddy Web 界面设置 subdomain.domain.com 以指向 domain.com/subdomain。我在子域目录下的 .htaccess 文件中放置了以下文本:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ api.php?__route__=/$1 [L,QSA]

当我尝试对 RESTful API 进行任何调用时,我收到标准的 500 内部服务器错误。

不幸的是,我必须等待几个小时才能让 GoDaddy 让我访问任何 Apache 日志文件。任何想法为什么这不起作用?

编辑

为了澄清,我希望进行以下重写:

internal.ledworld-me.com/some/path => ledworld-me.com/internal/api.php?__route__=/some/path

目前,GoDaddy 被用于将 internal.ledworld-me.com 映射到 ledworld-me.com/internal。我开始认为我应该从 GoDaddy 端删除映射并完全依赖 mod_rewrite 来实现这一点。

【问题讨论】:

    标签: apache .htaccess rest rewrite epiphany


    【解决方案1】:

    将此代码放入您的DOCUMENT_ROOT/internal/.htaccess 文件中:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/?$ api.php?__route__=/$1 [L,QSA]
    

    【讨论】:

    • 现在我得到“在此服务器上找不到请求的 URL /subdomain/some/path”。似乎没有进行 URL 重写。为了澄清事情并使问题不那么笼统,域是 ledworld-me.com,子域是 internal.ledworld-me.com。所以我想要的是,当向 internal.ledworld-me.com/path 发出请求时,它应该被重写为 ledworld-me.com/internal/api.php?__route__=/path。另请注意,子域 internal.ledworld-me.com 到 ledworld-me.com/internal 的映射已通过 GoDaddy 网络界面设置。
    • 您能否知道两个域是否共享相同的DocumentRoot
    • 是的,internal.ledworld-me.com 映射到 ledworld-me.com/internal(通过 GoDaddy),因此它们共享同一个 DocumentRoot。
    • 我应该从 GoDaddy 关闭 internal.ledworld-me.com 到 ledworld-me.com/internal 的映射还是保留它?
    • 我认为这应该被关闭,DocumentRoot 需要两个域相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2012-09-17
    • 1970-01-01
    • 2010-09-08
    • 2023-04-01
    • 2014-05-15
    相关资源
    最近更新 更多