Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
.htaccess:如何同时为Symfony和Wordpress重写URL_Wordpress_.htaccess_Symfony - Fatal编程技术网

.htaccess:如何同时为Symfony和Wordpress重写URL

.htaccess:如何同时为Symfony和Wordpress重写URL,wordpress,.htaccess,symfony,Wordpress,.htaccess,Symfony,我有一个域和一个服务器来安装我的所有web应用程序,我的服务器已经有一个wordpress和一个php应用程序,但我想在上面添加一个symfony应用程序(我真的明白这不是一个好方法) 但是我的.htaccess有问题 我的服务器看起来像: 我的wordpress工作正常,myapp1(完整php)工作正常,但myapp2(Symfony 4)似乎不工作 当我转到www.mydomain.com/myapp2/public时,我很好地重定向到了www.mydomain.com/myapp2/p

我有一个域和一个服务器来安装我的所有web应用程序,我的服务器已经有一个wordpress和一个php应用程序,但我想在上面添加一个symfony应用程序(我真的明白这不是一个好方法)

但是我的.htaccess有问题

我的服务器看起来像:

我的wordpress工作正常,myapp1(完整php)工作正常,但myapp2(Symfony 4)似乎不工作

当我转到www.mydomain.com/myapp2/public时,我很好地重定向到了www.mydomain.com/myapp2/public/login,但出现了wordpress 404 not found错误

我100%确定我必须更改.htaccess文件中的某些内容,但我不知道如何使其工作

我试着加上几行,但似乎什么都不起作用

以下是我的服务器的.htaccess文件:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
</IfModule>

重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
我真的需要你的帮助。。。很抱歉为我的问题烦恼


提前感谢

让我们先做一个警告:像这样将所有这些文件放在那些公共文件夹中是非常糟糕的,因为我们只需打开配置文件即可浏览eg
yourhost/myapp1/config/services.yaml
。这些将是完全可读的!因此,建议只向外界公开symfony项目的公用文件夹(具有index.php的文件夹)。或者,您必须进一步编辑htaccess,只允许访问特定的文件类型/文件夹,如资产

不过,这个问题有一个答案,就是:

# If the requested path is NOT (!) an actual file (-f) on the disk
RewriteCond %{REQUEST_FILENAME} !-f

# And if the requested path is NOT (!) an actual directory (-d) on the disk
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite any path (`.` is a regex where the dot will match anything) to /index.php
RewriteRule . /index.php [L]
在myapp1/2中,调用file/directory有很多方法,因为它们是实际的文件调用,不会被转发到root/index.php(wordpress)

我们可以通过添加

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/myapp1
RewriteCond %{REQUEST_URI} !^/myapp2

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]
使用
RewriteCond%{REQUEST_URI}还可以在正则表达式中组合前两个^/(myapp1 | myapp2)

这将导致任何路径:

  • 不是以/myapp1开头
  • 而不是以/myapp2开头
  • 而且不是一个文件
  • 并且不是一个目录
正在重写为
/index.php


然后,您还可以在myapp1/2中添加一个.htaccess,专门为这些应用程序进行重写。

正如Jenne所说,您当前的Wordpress应用程序的.htaccess会重写所有未重写的内容

  • 现有目录
  • 现有文件
到Wordpress的index.php

这就是PHP应用程序运行良好的原因。然而,Symfony也需要将所有内容重写到index.php

我不建议将Symfony定位在公共目录中。正如Jenne所说,应该将其定位在它之外,例如,创建一个自己的子域,其根目录是Symfony应用程序的公共目录

但是,您可以向.htaccess文件中添加一个额外的重写规则,该规则为Symfony执行所需的重写

# If the path points inside the myapp2 public folder
RewriteCond %{REQUEST_URI} ^/myapp2/public/.
# and there is a file at that path
RewriteCond %{REQUEST_FILENAME} -f
# use that file.
RewriteRule ^ - [L]

# If the url points to /myapp2 use the Symfony index.php.
RewriteRule ^/myapp2(/.*)?$ /myapp2/public/index.php [L]

# If the path points to something which is no existing file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# use the Wordpress index.php.
RewriteRule . /index.php [L]
这样,您就可以访问Symfony公共目录中的所有文件,如下所示:
www.example.com/myapp2/public/somefile.txt


并将
/myapp2
中的所有其他内容用于您的Symfony路线。但是,无法访问myapp2文件夹中和公用文件夹之外的所有文件。

请将htaccess文件包含在代码块中,而不是图像中,这将使其立即可见、可复制(因此,如果有人愿意,可以进行测试)而且它不会被一些外部网站删除,为后来来到这里的人删除上下文。你也可以在问题中显示图像,而不是将其作为链接。我编辑过,似乎我需要更多的声誉来显示图像tho,谢谢你的建议。我试图将这些行添加到main.htaccess中,但它阻止了wordpress css文件:/并且没有解决我的问题,然后我尝试将一个.htaccess文件添加到myapp2根目录中,但它似乎不起作用。如果我明白了,我会改变:重写规则/index.php[L]的重写规则/public/index.php[L]到.htaccess,对吗?刚刚测试了这个,它确实按预期工作。不过我确实错过了上的
重写引擎,所以可能它在您的测试中没有激活?但是我可以访问一个静态文件,比如
/assets/bleep.txt
。它现在可以工作了,不知道在我的服务器接受更改之前有一个巨大的延迟,谢谢你的帮助它似乎可以工作!!服务器只需要一段时间来接受.htaccess文件中的更改。有一些错误,但这次使用Symfony错误处理程序,所以我会检查自己,非常感谢您和Jenne的建议!