【问题标题】:.htaccess rewrite subdomain to above directory.htaccess 将子域重写到上述目录
【发布时间】:2015-11-23 06:42:41
【问题描述】:

我遇到了一个 mod_rewrite 问题,这一次我自己搞不清楚:

页面中的某些 Javasript 需要加载更多 JS 文件,但由于缺少 CORS-Header(Access-Control-Allow-Origin)而被拒绝

我的服务器结构

 Root | admin   | index.php 
      | content | (...)
      | system  | wysiwyg | (Files)

我的.htaccess在根目录下:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^i.cms.local
RewriteRule ^(.*)$ /content/media/getImage.php?img=$1 [QSA,NC,L]

RewriteCond %{HTTP_HOST} ^(admin|a).cms.local
RewriteRule ^(.*)$ /admin/$1 [L]

RewriteCond %{HTTP_HOST} ^cms.local
RewriteRule ^(.*)$ http://www.cms.local/$1

RewriteCond %{REQUEST_URI} \ /+index\.php\?q=([^&\ ]+)
RewriteRule ^ /%1.html [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.html$ /index.php?q=$1 [L]
RewriteRule ^(.+)/$ index.php?q=$1 [L]

我打开的文件是通过子域a.cms.local 访问的管理目录中的index.php。其他文件通常由s2.cms.local/wysisyg/... 访问。但是为了避免 CORS 标头错误,我需要从同一个 URL 接收它们,对吗?我虽然我使用以下链接:

http://a.cms.local/wysiwyg/anyfile.js

然后.htaccess 将所有所见即所得的请求重定向到系统文件夹中的所见即所得文件夹中。不知何故,我不断收到 404 错误 - 希望有人有想法?

【问题讨论】:

  • 您可以改为设置 CORS 标头。
  • @hjpotter92 不,因为这将启用 XSS 攻击,这意味着我试图避免一个很大的安全漏洞(据我所知)
  • @hjpotter92 看起来很有趣,我把它放到我的 htaccess 中了吗
  • 您可以自己回答,包括您添加的代码。

标签: apache .htaccess mod-rewrite


【解决方案1】:

在类似的帖子中找到了答案:https://stackoverflow.com/a/27990162/1190388 在 htaccess 中添加了以下内容,它使用 ^orgin cms.local 为所有 url 启用 CORS:

SetEnvIf Origin ^(https?://.+\.cms\.local(?::\d{1,5})?)$   CORS_ALLOW_ORIGIN=$1
Header append Access-Control-Allow-Origin  %{CORS_ALLOW_ORIGIN}e   env=CORS_ALLOW_ORIGIN
Header merge  Vary "Origin"

【讨论】:

    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多