Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
Mod rewrite 需要mod_重写条件和规则来替换";。com“;加上“,”;。org";在1个虚拟主机上_Mod Rewrite - Fatal编程技术网

Mod rewrite 需要mod_重写条件和规则来替换";。com“;加上“,”;。org";在1个虚拟主机上

Mod rewrite 需要mod_重写条件和规则来替换";。com“;加上“,”;。org";在1个虚拟主机上,mod-rewrite,Mod Rewrite,我有一系列mod_rewrite指令(如下代码1所示),通过定制PHP应用程序运行每个服务器请求 代码1 Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /app/core.php [L,NC,QSA] 在我进入mod_重写的最后一步之前,我需要将对mydomain.com的任何请求更改为mydomain.org。下面的代码

我有一系列mod_rewrite指令(如下代码1所示),通过定制PHP应用程序运行每个服务器请求

代码1

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]
在我进入mod_重写的最后一步之前,我需要将对mydomain.com的任何请求更改为mydomain.org。下面的代码2显示了我的想法,但它不起作用。请求给我500个内部服务器错误

代码2

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mydomain\.com$
RewriteRule ^ http://mydomain.org%{REQUEST_URI}
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]

有人能提个建议吗?谢谢

我估计您的站点可以通过两个域访问,但您希望所有对站点的请求都重定向到其中一个域。那么正确的代码是:

RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=permanent,L]
您应该将代码直接放在重定向行之后

第二行确保在没有主机的情况下没有重定向(在这种情况下防止重定向循环)

第三行中的[R=permanent,L]使其成为永久重定向,并阻止任何进一步的规则处理。一旦发生重定向,将处理其他规则


完整文件将是:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=permanent,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]

谢谢@Chronial。根据你陈述的方式,你的假设是正确的。那么整个snipit指令看起来是这样的:
Options+FollowSymLinks RewriteEngine on RewriteCond%{HTTP_HOST}^mydomain\.com$[NC]RewriteCond%{HTTP_HOST}!^$重写规则^(.*)$http://mydomain.org/$1[R=permanent,L]RewriteBase/RewriteCond%{REQUEST_FILENAME}-f RewriteRule^(.*)$/app/core.php[L,NC,QSA]
@Chronial…我似乎无法格式化我的注释以显示可读代码,因此请查看我修订指令的下一个答案,并告诉我这是否是我应该使用的解决方案。正如我所说的,您必须将我的代码放在RewriteBase命令之后。更新我的答案以包含完整代码。好的,谢谢@Chronial。当我读到你上面说的“你应该把代码直接放在重定向行之后”时,我不确定“重定向行”实际上是指重写基。我正在学习:)嗯,它不起作用。服务器上其他不相关的虚拟主机在浏览器状态栏中显示为一系列重复的重定向消息,并且从未解析该页面。mydomain.com实际上显示了临时登录页,但它不应该这样做——它应该显示.org网站。而mydomain.org只是坐在一个白色的屏幕上,进度条慢了下来,我在那里坐了大约30秒后就把整个事情搞定了。所以我想我会继续前进。谢谢你试一试。
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=permanent,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]