Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有附加域的WSGI.htaccess_.htaccess_Url_Mod Rewrite_Subdomain_Wsgi - Fatal编程技术网

带有附加域的WSGI.htaccess

带有附加域的WSGI.htaccess,.htaccess,url,mod-rewrite,subdomain,wsgi,.htaccess,Url,Mod Rewrite,Subdomain,Wsgi,我有一个子文件夹,在其中运行wsgi应用程序。我还有一个指向此子文件夹的附加域。在子文件夹中设置.htaccess文件时遇到问题 我当前的文件结构: public_html/ .htaccess irrelevant index.html some other irrelevant stuff sub_folder/ .htaccess app.wsgi 我有一个maindomain.com指向/public\u html/,还有一个addondomain.co

我有一个子文件夹,在其中运行wsgi应用程序。我还有一个指向此子文件夹的附加域。在子文件夹中设置.htaccess文件时遇到问题

我当前的文件结构:

public_html/
  .htaccess
  irrelevant index.html
  some other irrelevant stuff
  sub_folder/
    .htaccess
    app.wsgi
我有一个maindomain.com指向/public\u html/,还有一个addondomain.com指向/sub\u folder/。 当前根文件夹中的.htaccess文件为空,子文件夹中的文件为:

RewriteEngine On
RewriteBase /
RewriteRule ^(app\.wsgi/.*)$ - [L]
RewriteRule ^(.*)$ app.wsgi/$1 [QSA,L]

如果我去addondomain.com,这是有效的,但是当我去maindomain.com/sub_文件夹时,会给我一个404。日志显示它将查找/public_html/app.wsgi,而不是/public_html/sub_folder/app.wsgi。如何重写.htaccess以使其在两种情况下都能工作?

这应该也适用于附加域

RewriteEngine On
RewriteBase /

RewriteRule ^(app\.wsgi/.*)$ - [L]

RewriteCond %{HTTP_HOST} ^maindomain.com$ [NC]
RewriteRule ^sub_folder/(.*)$ sub_folder/app.wsgi/$1 [NC,QSA,L]

RewriteCond %{HTTP_HOST} ^addondomain.com$ [NC]
RewriteRule ^(sub_folder/)?(.*)$ app.wsgi/$1 [NC,QSA,L]
编辑

由于OP的
.htaccess
已在
/sub\u文件夹中,因此需要调整上述规则。如果有人想让自己的root
/.htaccess
坐在驾驶座上,上述方法仍然有效

RewriteEngine On
RewriteBase /

RewriteRule ^(app\.wsgi/.*)$ - [L]

RewriteCond %{HTTP_HOST} ^maindomain.com$ [NC]
RewriteRule ^(.*)$ sub_folder/app.wsgi/$1 [NC,QSA,L]

RewriteCond %{HTTP_HOST} ^addondomain.com$ [NC]
RewriteRule ^(.*)$ app.wsgi/$1 [NC,QSA,L]

我成功了,有点

RewriteEngine On
RewriteBase /

RewriteRule ^(app\.wsgi/.*)$ - [L]

RewriteCond %{REQUEST_URI} ^/sub_folder [NC]
RewriteRule ^(.*)$ sub_folder/app.wsgi/$1 [QSA,L]

RewriteCond %{REQUEST_URI} !^/sub_folder[NC]
RewriteRule ^(.*)$ app.wsgi/$1 [QSA,L]
@Ravi的答案适用于addondomain.com,但不适用于maindomain.com/sub_文件夹,因为在这种情况下会显示索引,因为它不会重定向到app.wsgi

为了解决这个问题,我添加了第二个RewriteCond和RewriteRule。现在的问题是,当您转到addondomain.com/sub_文件夹时,它不起作用(尽管这不应该发生)。因此,如果有一个更好的答案,也妥善处理,请启发我。否则我只希望这种情况不会发生

编辑:

这项工作:

RewriteEngine On
RewriteBase /

RewriteRule ^(app\.wsgi/.*)$ - [L]

RewriteCond %{HTTP_HOST} ^maindomain.com$ [NC]
RewriteRule ^(.*)$ sub_folder/app.wsgi/$1 [NC,QSA,L]

RewriteCond %{HTTP_HOST} ^addondomain.com$ [NC]
RewriteRule ^(.*)$ app.wsgi/$1 [NC,QSA,L]

Ravi的确切代码不起作用,因为这个.htaccess在sub_文件夹中,所以
^(.*)$
部分只是sub_文件夹之后的内容。但是像这样修改它是有效的。感谢您的帮助。

使用此RewriteCond,maindomain.com/sub_文件夹不起作用,因为在这种情况下,不会将任何内容重定向到app.wsgi。我试着用这个作为一个开始来回答这个问题,但它还没有完全起作用。请看我自己的答案。(我还在犹豫我是否应该把它作为一个编辑或者一个答案放在这里)这不是把maindomain/sub重定向到maindomain/sub/wsgi/sub吗?无论如何,我已经添加了一个更新来帮助添加域。不知怎么的,它没有。。。但是我根据你的更新更新了它,现在它工作得很好!很乐意帮忙。请考虑接受我的回答是否帮助你解决问题。谢谢